bcp ユーティリティによるデータのエクスポートおよびインポート

SQL Server 上のテーブルのデータをテキスト形式のファイルにエクスポートしたり、
逆にインポートしたりする方法について記述します。
 
SQL Server 認証を使用して、Table1, Table2 テーブルのデータを Unicode かつカンマ区切り形式のファイルとして
それぞれ Table1.csv, Table2.csv にエクスポートするには、以下のようなコマンドを実行します。

@echo off
 
set dbServer=localhost\SQLEXPRESS
set dbUser=user1
set dbPassword=P@ssw0rd
 
bcp [Database1].[dbo].[Table1] out Table1.csv -S %dbServer% -U %dbUser% -P %dbPassword% -w -t ,
bcp [Database1].[dbo].[Table2] out Table2.csv -S %dbServer% -U %dbUser% -P %dbPassword% -w -t ,
 
pause

 
逆に、Table1.csv, Table2.csv のデータをそれぞれ Table1, Table2 テーブルにインポートするには、out を in に変更するだけです。

@echo off
 
set dbServer=localhost\SQLEXPRESS
set dbUser=user1
set dbPassword=P@ssw0rd
 
bcp [Database1].[dbo].[Table1] in Table1.csv -S %dbServer% -U %dbUser% -P %dbPassword% -w -t ,
bcp [Database1].[dbo].[Table2] in Table2.csv -S %dbServer% -U %dbUser% -P %dbPassword% -w -t ,
 
pause

 
注意点
(1) Windows 認証を使用する場合は、-U および -P の代わりに -T を使用します。
bcp [Database1].[dbo].[Table1] out Table1.csv -S %dbServer% -T -w -t ,
(2) 「-w」の部分は Unicode 形式で出力することを示します。
他の文字エンコーディングで出力する場合は、「-c -C codepage」を指定します。
「-C codepage」を省略した場合は Shift_JIS となります。
例えば、UTF-8 で出力する場合は次のようにします。
bcp [Database1].[dbo].[Table1] out Table1.csv -S %dbServer% -U %dbUser% -P %dbPassword% -c -C 65001 -t ,
ただし、試してみたところ、どの文字エンコーディングでも利用可能というわけではないようです。
利用可: Shift_JIS (932)、JIS (20932)、ISO-2022-JP (50220)、UTF-8 (65001)
利用不可: Unicode (1200)、Unicode ビッグ エンディアン (1201)、EUC-JP (51932)
なお、Excel で CSV ファイルとして開く場合には、Shift_JIS でないと正常に読み込めません。
また、-w、-c の他に、-n (ネイティブ形式) および -N (Unicode ネイティブ形式) があります。
 
(3) 「-t ,」の部分はカンマ区切りであることを示します。省略した場合はタブ区切りとなります。
 
(4) NULL 値は空文字列として出力され、空文字列は \0 (16 進表記で 00 の制御文字) として出力されます。
 
(5) リレーションシップがある場合、親テーブルから先にインポートする必要があります。
 
(6) テーブル名を動的に取得する方法については、PowerShell でデータベースのすべてのデータをエクスポートするをご覧ください。
 
バージョン情報
SQL Server 2005, 2008, 2008 R2
 
 
カテゴリー: データベース. タグ: , . 1 Comment »

コメント / トラックバック1件 to “bcp ユーティリティによるデータのエクスポートおよびインポート”

  1. PowerShell でデータベースのすべてのデータをエクスポートする « Do Design Space Says:

    […] bcp ユーティリティによるデータのエクスポートおよびインポート « Do… より: 2010年10月1日 09:14 […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。