sql >> Database teknologi >  >> RDS >> Sqlserver

Eksporter tabel til fil med kolonneoverskrifter (kolonnenavne) ved hjælp af bcp-værktøjet og SQL Server 2008

Denne metode udlæser automatisk kolonnenavne med dine rækkedata ved hjælp af BCP.

Scriptet skriver én fil til kolonneoverskrifterne (læs fra INFORMATION_SCHEMA.COLUMNS tabel) tilføjer derefter en anden fil med tabeldataene.

Det endelige output kombineres til TableData.csv som har overskrifter og rækkedata. Bare udskift miljøvariablerne øverst for at angive server-, database- og tabelnavnet.

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

Bemærk, at hvis du skal angive legitimationsoplysninger, skal du erstatte -T-indstillingen med -U mit_brugernavn -P mit_adgangskode

Denne metode har den fordel, at den altid har kolonnenavnene synkroniseret med tabellen ved at bruge INFORMATION_SCHEMA.COLUMNS . Ulempen er, at det opretter midlertidige filer. Microsoft burde virkelig rette bcp-værktøjet for at understøtte dette.

Denne løsning bruger SQL-rækkesammenkædningstricket herfra kombineret med bcp-ideer herfra



  1. Postgresql SQL GROUP BY tidsinterval med vilkårlig nøjagtighed (ned til millisekunder)

  2. Indsæt i... Flet... Vælg (SQL-server)

  3. 3 måder at liste alle lagrede procedurer i en SQL Server-database

  4. Betyder rækkefølgen af ​​tabeller i en joinforbindelse, når LEFT (ydre) joins bruges?