Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server BCP експортира повреден файл?

Слава богу, благодарение на отговора на @user_0 и загадъчния отговор и коментар на @user3494351 и тази древна публикация във форума, най-накрая разбрах това след няколко часа блъскане с глава в стената.

Проблемът е, че BCP обича да добавя допълнителни 8 байта към файла по подразбиране. Това поврежда файла и го прави невъзможен за отваряне, ако просто използвате нативния флаг -n.

Въпреки това, BCP ви позволява да посочите файл с формат като изход, който може да ви позволи да му кажете да не добавя допълнителните 8 байта. Така че имам таблица, която създадох (да се използва в курсор) в SQL Server, която има само ЕДИН РЕД и ЕДНА КОЛОНА с моите двоични данни. Таблицата трябва да съществува, когато изпълните първата команда.

В командния ред първо трябва да направите това:

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

Това създава formatfile.fmt в директорията, в която се намирате. Направих на E:\ устройство. Ето как изглежда:

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

Това 8 точно там е променливата, която bcp казва колко байта да добавите към вашия файл. Това е копелето, което поврежда вашите файлове. Променете този смукател на 0:

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

Сега просто стартирайте вашия BCP скрипт, пуснете флага -n и включете флага -f:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GETUTCDATE() Примери в SQL Server (T-SQL)

  2. Как да използвате клаузата Where в Select Statement в SQL Server - SQL Server / TSQL Урок, част 109

  3. Как да добавите ограничение на външния ключ към съществуваща таблица в SQL Server - SQL Server / TSQL Урок, част 68

  4. Замяна на множество символи в низ в SQL Server (T-SQL)

  5. Най-популярните системи за управление на бази данни в света