bcp ユーティリティと SQL Server 2008 を使用して、列ヘッダー (列名) を含むファイルにテーブルをエクスポートする 質問する

bcp ユーティリティと SQL Server 2008 を使用して、列ヘッダー (列名) を含むファイルにテーブルをエクスポートする 質問する

bcp ユーティリティを使用してデータとともに列名をエクスポートしようとするハックをいくつか見てきました。テーブルをテキスト ファイルにダンプするだけの場合、bcp で列ヘッダーを追加する最も簡単な方法は何ですか?

現在使用している bcp コマンドは次のとおりです。

bcp myschema.dbo.myTableout myTable.csv /SmyServer01 /c /t, -T

ベストアンサー1

このメソッドは、行データとともに列名を自動的に出力します。事業継続計画

スクリプトは、列ヘッダー (INFORMATION_SCHEMA.COLUMNSテーブルから読み取る) の 1 つのファイルを書き込み、次にテーブル データを含む別のファイルを追加します。

最終出力は、TableData.csvヘッダーと行データを含む に結合されます。上部の環境変数を置き換えて、サーバー、データベース、およびテーブル名を指定します。

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

資格情報を入力する必要がある場合は、-Tオプションを-U my_username -P my_passwordに置き換えてください。

この方法の利点は、 を使用することで、列名が常にテーブルと同期されることですINFORMATION_SCHEMA.COLUMNS。欠点は、一時ファイルが作成されることです。Microsoft は、これをサポートするために bcp ユーティリティを修正する必要があります。

このソリューションは、SQLの行連結トリックを使用しています。ここBCPのアイデアと組み合わせてここ

おすすめ記事