Този метод автоматично извежда имена на колони с вашите данни за редове чрез BCP.
Скриптът записва един файл за заглавките на колоните (чете се от INFORMATION_SCHEMA.COLUMNS
таблица) след това добавя друг файл с данните от таблицата.
Крайният изход се комбинира в TableData.csv
който има данни за заглавки и редове. Просто заменете променливите на средата в горната част, за да посочите името на сървъра, базата данни и таблицата.
set BCP_EXPORT_SERVER=put_my_server_name_here
set BCP_EXPORT_DB=put_my_db_name_here
set BCP_EXPORT_TABLE=put_my_table_name_here
BCP "DECLARE @colnames VARCHAR(max);SELECT @colnames = COALESCE(@colnames + ',', '') + column_name from %BCP_EXPORT_DB%.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='%BCP_EXPORT_TABLE%'; select @colnames;" queryout HeadersOnly.csv -c -T -S%BCP_EXPORT_SERVER%
BCP %BCP_EXPORT_DB%.dbo.%BCP_EXPORT_TABLE% out TableDataWithoutHeaders.csv -c -t, -T -S%BCP_EXPORT_SERVER%
set BCP_EXPORT_SERVER=
set BCP_EXPORT_DB=
set BCP_EXPORT_TABLE=
copy /b HeadersOnly.csv+TableDataWithoutHeaders.csv TableData.csv
del HeadersOnly.csv
del TableDataWithoutHeaders.csv
Имайте предвид, че ако трябва да предоставите идентификационни данни, заменете опцията -T с -U my_username -P my_password
Този метод има предимството, че винаги има синхронизиране на имената на колоните с таблицата чрез INFORMATION_SCHEMA.COLUMNS
. Недостатъкът е, че създава временни файлове. Microsoft наистина трябва да поправи помощната програма bcp, за да поддържа това.
Това решение използва трика за конкатенация на SQL редове от тук, комбиниран с идеи за bcp от тук