Команда bcp не определяет nullable в файле формата - PullRequest
0 голосов
/ 09 января 2019

Я использую такую ​​команду:

bcp "tablename" format nul -w -x -f "Format.xml" -d databasename -S servername -G

Который генерирует файл формата (сокращенно) примерно так:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="NCharTerm" TERMINATOR="\t\0" MAX_LENGTH="42"/>
  <FIELD ID="2" xsi:type="NCharTerm" TERMINATOR="\t\0" MAX_LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharTerm" TERMINATOR="\t\0" MAX_LENGTH="256" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <!-- ABRIDGED -->

 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="ID" xsi:type="SQLBIGINT"/>
  <COLUMN SOURCE="2" NAME="BUSINESS_UNIT" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="3" NAME="SERVICE_NUMBER" xsi:type="SQLVARYCHAR" />
  <!-- ABRIDGED -->
 </ROW>
</BCPFORMAT>

Однако тип данных в SQL Server для SERVICE_NUMBER допускает значение NULL, поэтому я ожидал бы следующее:

<COLUMN SOURCE="3" NAME="SERVICE_NUMBER" xsi:type="SQLVARYCHAR" NULLABLE="YES"/>

Команда -k, похоже, предназначена только для импорта, тогда как я хотел бы, чтобы файл формата существовал как способ документирования известной схемы, которую представляет файл экспортированных данных.

1 Ответ

0 голосов
/ 18 января 2019

Да, -k для "в" операции BCP. Вы не можете получить искомую информацию из файла формата.

Что касается получения документа для "показа известной схемы", почему бы просто не запросить представления INFORMATION_SCHEMA и извлечь их содержимое?

bcp "select * from INFORMATION_SCHEMA.COLUMNS, где TABLE_NAME = '' order by ORDINAL_POSITION" queryout .... (остальная часть нашей команды BCP)

...