Este método genera automáticamente los nombres de las columnas con los datos de las filas mediante BCP.
El script escribe un archivo para los encabezados de las columnas (leer de INFORMATION_SCHEMA.COLUMNS
table) luego agrega otro archivo con los datos de la tabla.
El resultado final se combina en TableData.csv
que tiene los encabezados y los datos de fila. Simplemente reemplace las variables de entorno en la parte superior para especificar el nombre del servidor, la base de datos y la tabla.
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
Tenga en cuenta que si necesita proporcionar credenciales, reemplace la opción -T con -U my_username -P my_password
Este método tiene la ventaja de tener siempre los nombres de las columnas sincronizados con la tabla usando INFORMATION_SCHEMA.COLUMNS
. La desventaja es que crea archivos temporales. Microsoft realmente debería arreglar la utilidad bcp para admitir esto.
Esta solución utiliza el truco de concatenación de filas SQL de aquí combinado con ideas de bcp de aquí