データのエクスポートとインポートをBCPユーティリティを利用して行います。
bcp データベース名.所有者(初期はdbo).テーブル名 in|out|queryout|format ファイル名 オプション
bcp Test_db.dbo.TestTbl out TestTbl.txt /U ユーザ名 /S サーバ名 /P パスワード /c /t , /r \r\n /q >> exec.log
/c /cを指定しない場合、列ごとにプロンプトでタブや改行を指定する必要がある。
/t /cを指定した場合、デフォルトはタブ区切りになる。変更する場合に指定。
/r /cを指定した場合、デフォルトは\nになる。変更する場合に指定。
/q 空白や単一引用符を含むデータベース名、所有者、テーブル名を指定する場合に指定。
/o bcpコマンド単位でログ出力できる。「>> ファイル名」の方が楽。
/f フォーマット個別指定。/cの方が楽。
以下がフォーマット。
8.0
2
1 SQLCHAR 0 3 "," 1 USERID Japanese_BIN
2 SQLDATETIME 0 8 "," 2 DATE ""
1行目:バージョン番号
2行目:列数
3行目:番号、データ型、プレフィックス長、項目長、終端文字、DB内の項目番号、DB内の項目名、行の照合順序(※1)
※1
照合順序の例
Japanese_BIN
大文字、小文字、シングルバイト、ダブルバイト、ひらがな、カタカナを全て区別する
Japanese_CI_AS
大文字、小文字、シングルバイト、ダブルバイト、ひらがな、カタカナを全て区別しない
複数テーブルに対して作成する場合、
以下のようなSQL文を準備しておくと汎用性が高くなる。
SELECT 'bcp Test_db.dbo.' + name + ' out ' + name + '.txt /U ユーザ名 /S サーバ名 /P パスワード /c /t "," /r \r\n' FROM sysobjects WHERE type = 'U' ORDER BY name;