sql >> Database >  >> RDS >> Sqlserver

Exporteer tabel naar bestand met kolomkoppen (kolomnamen) met behulp van het bcp-hulpprogramma en SQL Server 2008

Deze methode voert automatisch kolomnamen uit met uw rijgegevens met behulp van BCP.

Het script schrijft één bestand voor de kolomkoppen (lees uit INFORMATION_SCHEMA.COLUMNS table) voegt vervolgens een ander bestand toe met de tabelgegevens.

De uiteindelijke uitvoer wordt gecombineerd in TableData.csv die de koppen en rijgegevens heeft. Vervang gewoon de omgevingsvariabelen bovenaan om de server-, database- en tabelnaam op te geven.

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

Merk op dat als u inloggegevens moet opgeven, de optie -T moet worden vervangen door -U my_username -P my_password

Deze methode heeft het voordeel dat de kolomnamen altijd gesynchroniseerd zijn met de tabel door gebruik te maken van INFORMATION_SCHEMA.COLUMNS . Het nadeel is dat het tijdelijke bestanden maakt. Microsoft zou het bcp-hulpprogramma echt moeten repareren om dit te ondersteunen.

Deze oplossing gebruikt de SQL rij-aaneenschakelingstruc van hier gecombineerd met bcp-ideeën van hier



  1. mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object

  2. Geïndexeerde weergaven en statistieken

  3. Boekbespreking :Benjamin Nevarez :Zoekopdracht afstemmen en optimaliseren

  4. Hoe kan ik verbinding maken met de Oracle Database 11g-server via ssh-tunnelketen (dubbele tunnel, server in bedrijfsnetwerk)?