sql >> データベース >  >> RDS >> Sqlserver

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

    このメソッドは、BCPを使用して行データとともに列名を自動的に出力します。

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

    最終出力は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アイデアを組み合わせて使用​​します



    1. OPENROWSETクエリでの変数の使用

    2. MySQLでテーブル変数を作成する

    3. Herokuの進化におけるエラー

    4. SQLException:文字列またはバイナリデータは切り捨てられます