sql >> Databasteknik >  >> RDS >> Sqlserver

Exportera tabell till fil med kolumnrubriker (kolumnnamn) med hjälp av bcp-verktyget och SQL Server 2008

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



  1. MySQL främmande nyckel begränsningar, kaskad radering

  2. SCD typ 6

  3. Hur REGEXP_INSTR()-funktionen fungerar i MySQL

  4. Med Oracle SQL, hur matar man ut dagnummer veckodag och veckodag?