Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exportar tabela para arquivo com cabeçalhos de coluna (nomes de coluna) usando o utilitário bcp e o SQL Server 2008


Esse método gera automaticamente nomes de coluna com seus dados de linha usando BCP.

O script grava um arquivo para os cabeçalhos das colunas (leia de INFORMATION_SCHEMA.COLUMNS table) anexa outro arquivo com os dados da tabela.

A saída final é combinada em TableData.csv que tem os cabeçalhos e os dados da linha. Basta substituir as variáveis ​​de ambiente na parte superior para especificar o nome do servidor, banco de dados e tabela.
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

Observe que, se você precisar fornecer credenciais, substitua a opção -T por -U my_username -P my_password

Este método tem a vantagem de sempre ter os nomes das colunas em sincronia com a tabela usando INFORMATION_SCHEMA.COLUMNS . A desvantagem é que ele cria arquivos temporários. A Microsoft deve realmente corrigir o utilitário bcp para oferecer suporte a isso.

Esta solução usa o truque de concatenação de linhas SQL daqui combinado com ideias bcp daqui