sql >> Databáze >  >> RDS >> Sqlserver

Export tabulky do souboru se záhlavími sloupců (názvy sloupců) pomocí nástroje bcp a SQL Server 2008

Tato metoda automaticky vydává názvy sloupců s daty řádků pomocí BCP.

Skript zapíše jeden soubor pro záhlaví sloupců (přečteno z INFORMATION_SCHEMA.COLUMNS table) pak připojí další soubor s daty tabulky.

Konečný výstup je spojen do TableData.csv který obsahuje data záhlaví a řádků. Stačí nahradit proměnné prostředí v horní části a zadat název serveru, databáze a tabulky.

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

Všimněte si, že pokud potřebujete zadat přihlašovací údaje, nahraďte volbu -T volbou -U moje_uživatelské_jméno -P moje_heslo

Tato metoda má výhodu v tom, že názvy sloupců jsou vždy synchronizovány s tabulkou pomocí INFORMATION_SCHEMA.COLUMNS . Nevýhodou je, že vytváří dočasné soubory. Microsoft by měl opravdu opravit nástroj bcp, aby to podporoval.

Toto řešení využívá trik pro zřetězení řádků SQL odtud v kombinaci s nápady bcp odtud



  1. Jak funguje sqrt() v PostgreSQL

  2. Neo4j - Zrušte omezení pomocí Cypher

  3. SQLite Self-Join

  4. Jak funguje ORIGINAL_DB_NAME() na serveru SQL Server