Den här metoden matar automatiskt ut kolumnnamn med dina raddata med hjälp av BCP.
Skriptet skriver en fil för kolumnrubrikerna (läs från INFORMATION_SCHEMA.COLUMNS
table) lägger sedan till en annan fil med tabelldata.
Den slutliga utdatan kombineras till TableData.csv
som har rubrikerna och raddata. Byt bara ut miljövariablerna längst upp för att ange server-, databas- och tabellnamn.
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
Observera att om du behöver ange autentiseringsuppgifter, ersätt alternativet -T med -U mitt_användarnamn -P mitt_lösenord
Denna metod har fördelen att alltid ha kolumnnamnen synkroniserade med tabellen genom att använda INFORMATION_SCHEMA.COLUMNS
. Nackdelen är att det skapar tillfälliga filer. Microsoft borde verkligen fixa bcp-verktyget för att stödja detta.
Den här lösningen använder SQL-radsammansättningstricket härifrån kombinerat med bcp-idéer härifrån