Как создать файл fmt с помощью команды bcp и выбрать только подмножество столбцов из целевой таблицы? - PullRequest
0 голосов
/ 28 мая 2020

Я создаю файлы .fmt с помощью команды bcp, используя шаблон ниже:

bcp schema.dbo.table format nul -S servername\sqlserver-engine -f filename.fmt -c -T

Эта команда создает файл, разделенный табуляцией, со всеми столбцами из целевой таблицы вместе с соответствующими спецификациями типа / длины данных .

Однако в моем случае данные будут иметь только подмножество столбцов, поэтому для завершения массовой вставки необходимо вручную удалить столбцы, которые будут иметь значение NULL, и перенумеровать элементы, оставленные в .fmt файл. Есть ли способ создать файл .fmt с подмножеством столбцов (только то, что необходимо), чтобы исключить этот ручной процесс?

1 Ответ

0 голосов
/ 29 мая 2020

три варианта:

  1. создать файл формата самостоятельно, программно. Не используйте BCP с опцией «формат». Напишите запрос к information_schema для нужной таблицы. Поместите этот запрос во встроенную команду bcp и выполните команду в ОС. fyi, просто нужен один пробел между каждым «столбцом» файла формата. не обязательно, чтобы он выглядел точно так, как дает вам команда "format" BCP.

  2. создайте представление поверх вашей таблицы для экспорта. устраните там ненужные столбцы. bcp из этого представления.

  3. оставьте все как есть для экспорта и просто игнорируйте столбцы, которые вам не нравятся на пути к месту назначения. Невозможно установить место назначения равным "0" в файле формата, и оно будет проигнорировано.

...