DB

【SQL Server】bcpコマンドでデータをエクスポート/インポートする方法

SQL Serverに対して大量のデータを高速にインポートする方法として、「bcpユーティリティ」を使う方法があります。
bcpはWindowsのコマンドプロンプトからコマンドを実行することで利用できます。

この記事ではbcpの使い方をまとめます。

エクスポート

基本的な構文は下記の通りです。ファイルはテキストファイルとして保存します。

構文

bcp テーブル名 out 保存先パス -c -S サーバー名 -U ユーザ名 -P パスワード -d データベース名

(例)bcp Person out "Person.txt" -c -S ServerName -U UserName-P PassWord -d DbName

上記の例ではテーブルのデータすべてをエクスポートします。
特定のデータのみエクスポートしたい場合は、下記のようにSELECT文を記述します。

(例)bcp "SELECT * FROM Person WHERE Age >= 30" queryout "Person.txt" -c -S ServerName -U UserName-P PassWord -d DbName

テーブル名をSELECT文にし、out を queryout にすることで、特定のデータをエクスポートできます。

インポート

基本的な構文は下記の通りです。

構文

bcp テーブル名 in インポートファイルパス -c -S サーバー名 -U ユーザ名 -P パスワード -d データベース名

インポートファイルは列をタブ区切りのテキストファイルである前提です。
インポートファイルはbcpでエクスポートするか、テキストファイルにSSMSからコピペしてもOKです。

(例)ID, Name, Age の3列のPersonテーブル
1 永野芽衣 21
2 本田翼 28
3 戸田恵梨香 32

(例)bcp Person in "Person.txt" -c -S ServerName -U UserName-P PassWord -d DbName

実行して、「○行コピーされました。」とメッセージが返れば成功です。

環境に応じたオプションの変更

文字コード

テキストファイルの文字コードによって、オプションを変更する必要があります。

Shift-JIS

Shift-JIS の場合は、-c のままでOKです。

Unicode(UTF-16)

UTF-16 の場合は、-c を -w にする必要があります。

(例)bcp Person in "Person.txt" -w -S ServerName -U UserName-P PassWord -d DbName

UTF-8

UTF-8 の場合は、bcp では利用することができません。
そのため、UTF-16 か Shift-JIS に変換する必要があります。

SQL Server 認証 / Windows 認証

SQL Server 認証の場合は、上記の構文の通りでOKです。

Windows 認証の場合は、-U と -P は必要なく、-T を使います。

 (例)bcp Person in "Person.txt" -c -S ServerName -T -d DbName 
エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】安心保障と豊富な案件紹介 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい

【未経験向け】自宅で現役エンジニアから学べる TechAcademy

テックアカデミーは、現役エンジニアから学べるオンラインに特化したプログラミングスクールです。
講師は全員、通過率10%の選考に合格した現役エンジニア。
確かなスキルをもとに受講生をマンツーマンサポートします。


▼こんな方におすすめ
・自宅にいながらオンライン完結で勉強できる
・受講生に1人ずつ現役エンジニアのパーソナルメンターが専属でつく
・チャットで質問すればすぐに回答が返ってくる
・オリジナルサービスやオリジナルアプリなどの開発までサポート