sql >> Databáze >  >> RDS >> Sqlserver

Poškozený soubor exportu SQL Server BCP?

Díky bohu, díky odpovědi @user_0 a záhadné odpovědi a komentáři @user3494351 a tomuto prastarému příspěvku na fóru jsem na to konečně přišel po několika hodinách mlácení hlavou o zeď.

Problém je v tom, že BCP ve výchozím nastavení rád přidává do souboru dalších 8 bajtů. To poškodí soubor a znemožňuje jej otevřít, pokud pouze použijete nativní příznak -n.

BCP vám však umožňuje zadat formátový soubor jako výstup, který vám umožní sdělit mu, aby nepřidával dalších 8 bajtů. Takže mám tabulku, kterou jsem vytvořil (pro použití v kurzoru) na SQL Server, která má pouze JEDEN ŘÁDEK a JEDEN SLOUPEK s mými binárními daty. Tabulka musí existovat, když spustíte první příkaz.

V příkazovém řádku nejprve musíte provést toto:

bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt

Tím se vytvoří formatfile.fmt v adresáři, ve kterém se nacházíte. Udělal jsem to na jednotce E:\. Tady je to, jak to vypadá:

10.0
1
1       SQLBINARY           8       0       ""   1     MyColumn             ""

Právě tam je proměnná bcp, která říká, kolik bajtů přidat do souboru. Je to ten bastard, který poškozuje vaše soubory. Změňte ten cucák na 0:

10.0
1
1       SQLBINARY           0       0       ""   1     MyColumn             ""

Nyní stačí spustit skript BCP, zrušit parametr -n a zahrnout parametr -f:

bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt


  1. 8 způsobů, jak přidat minuty k datu a času v MariaDB

  2. Přidat přihlášení k propojenému serveru na SQL Server (příklad T-SQL)

  3. Jak vložit data z jedné databázové tabulky do jiné databázové tabulky v Mysql

  4. Jak zvýšit výkon pro hromadné INSERTy do propojených tabulek ODBC v Accessu?