Diese Methode gibt mithilfe von BCP automatisch Spaltennamen mit Ihren Zeilendaten aus.
Das Skript schreibt eine Datei für die Spaltenüberschriften (gelesen aus INFORMATION_SCHEMA.COLUMNS
table) hängt dann eine weitere Datei mit den Tabellendaten an.
Die endgültige Ausgabe wird in TableData.csv
kombiniert die die Header und Zeilendaten enthält. Ersetzen Sie einfach die Umgebungsvariablen oben, um den Server-, Datenbank- und Tabellennamen anzugeben.
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
Beachten Sie, dass Sie die Option -T durch -U mein_benutzername -P mein_passwort
ersetzen müssen, wenn Sie Anmeldeinformationen angeben müssen
Diese Methode hat den Vorteil, dass die Spaltennamen immer synchron mit der Tabelle sind, indem INFORMATION_SCHEMA.COLUMNS
verwendet wird . Der Nachteil ist, dass temporäre Dateien erstellt werden. Microsoft sollte wirklich das Dienstprogramm bcp reparieren, um dies zu unterstützen.
Diese Lösung verwendet den SQL-Zeilenverkettungstrick von hier in Kombination mit bcp-Ideen von hier