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

SQL Server BCPは破損したファイルをエクスポートしますか?

    神に感謝します。@user_0の回答と@user3494351の不可解な回答とコメント、そしてこの古代のフォーラムの投稿のおかげで、壁に頭をぶつけて数時間後にようやくこれを理解しました。

    問題は、BCPがデフォルトでファイルに8バイトを追加することを好むことです。これによりファイルが破損し、ネイティブの-nフラグを使用しただけではファイルを開くことができなくなります。

    ただし、BCPでは、フォーマットファイルを出力として指定して、8バイトを追加しないように指示することができます。そのため、SQL Serverで作成した(カーソルで使用する)テーブルがあり、バイナリデータには1つの行と1つの列しかありません。最初のコマンドを実行するときは、テーブルが存在している必要があります。

    コマンドラインで最初にこれを行う必要があります:

    bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt
    

    これにより、現在のディレクトリにformatfile.fmtが作成されます。E:\ドライブで作成しました。外観は次のとおりです。

    10.0
    1
    1       SQLBINARY           8       0       ""   1     MyColumn             ""
    

    その8つは、bcpがファイルに追加するバイト数を示す変数です。あなたのファイルを破壊しているのはろくでなしです。その吸盤を0に変更します:

    10.0
    1
    1       SQLBINARY           0       0       ""   1     MyColumn             ""
    

    次に、BCPスクリプトを実行し、-nフラグを削除して、-fフラグを含めます。

    bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt
    


    1. 「警告:sl_tableとpg_classの間に不一致が見つかりました。」 Slony-Iで

    2. psql-コマンドの結果をファイルに保存します

    3. PostgresPlus AdvanceServer9.1を使用したPL/プロキシのコンパイル

    4. テーブル内の複数の制約:すべての違反を取得する方法は?