Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Exportieren Sie die Tabelle mit Spaltenüberschriften (Spaltennamen) mithilfe des Dienstprogramms bcp und SQL Server 2008 in eine Datei

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