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

Esporta la tabella in un file con intestazioni di colonna (nomi di colonna) utilizzando l'utilità bcp e SQL Server 2008

Questo metodo genera automaticamente i nomi delle colonne con i dati delle righe utilizzando BCP.

Lo script scrive un file per le intestazioni di colonna (letto da INFORMATION_SCHEMA.COLUMNS tabella) quindi aggiunge un altro file con i dati della tabella.

L'output finale viene combinato in TableData.csv che ha le intestazioni e i dati di riga. Basta sostituire le variabili di ambiente in alto per specificare il nome del server, del database e della tabella.

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

Nota che se devi fornire le credenziali, sostituisci l'opzione -T con -U my_username -P my_password

Questo metodo ha il vantaggio di avere sempre i nomi delle colonne sincronizzati con la tabella utilizzando INFORMATION_SCHEMA.COLUMNS . Lo svantaggio è che crea file temporanei. Microsoft dovrebbe davvero correggere l'utilità bcp per supportare questo.

Questa soluzione utilizza il trucco di concatenazione delle righe SQL da qui combinato con le idee bcp da qui