読者です 読者をやめる 読者になる 読者になる

bcpコマンドでテーブルをタブ区切りテキストファイル経由でコピー

SQLServer

元ネタはbcp.exe を使用した CSV 入出力

CSVファイルへの書き出し・取込の例は多いですが、私はフィールド値にカンマが入っててハマったのでタブ区切りにしました。

上がエクスポート、下がインポートです。

直接SQL Server Management StudioやEnterprise Managerが繋がらないネットワーク的に離れたDBサーバ間でデータをコピーするときにどうぞ。

C:\>bcp YourDB.dbo.YourTable out C:\YourTable.tsv -c -t\t -r\n -SYourDBServer\YourDBInstance -Usa -Ppassword

コピーを開始中です...

848 行コピーされました。
ネットワーク パケット サイズ (バイト数): 4096
クロック タイム (ミリ秒): 合計       16

C:\>bcp YourDB.dbo.YourTable in C:\YourTable.tsv -c -t\t -r\n -SYourDBServer\YourDBInstance -Usa -Ppassword

コピーを開始中です...
SQLState = 22008, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]日付の形式が正しくありません。

847 行コピーされました。
ネットワーク パケット サイズ (バイト数): 4096
クロック タイム (ミリ秒): 合計       62

C:\>

この例ではなぜか1行インポートし損ねてますが、大勢に影響しないので深入りしておりませんw