bcpコマンドを利用すると、SQL ServerのテーブルのデータをCSVファイルに出力したり、逆にCSVファイルのデータをSQL Serverのテーブルに書き込んだりすることができる。
今回は、bcpコマンドを利用してみたので、その手順を共有する。
なお、bcpコマンドについては、以下のサイトを参照のこと。
https://mr-star.hatenablog.com/entry/sqlserver/020
前提条件
下記記事のように、A5M2を利用してSQL Serverに接続できていること。

やってみたこと
SQL Serverにテーブルを作成
bcpコマンドの実行を行うために、SQL Serverに新しくemployeeテーブルを作成し、データを追加する。その手順は、以下の通り。
1) create table文を利用して、employeeテーブルを作成する。
create table dbo.employee ( emp_id int not null primary key , emp_name nvarchar(40) not null , memo nvarchar(120) , create_user varchar(40) , create_date datetime , update_user varchar(40) , update_date datetime )

2) A5M2上で、複数のinsert文を全て選択した状態で、実行ボタンを押下することで、employeeテーブルにデータをまとめて追加する。
insert into dbo.employee values (1, N'テスト プリン1', N'メモ1' , 'user1', '2022-06-11 15:00:00', 'user2', '2022-06-12 10:30:00'); insert into dbo.employee values (2, N'テスト プリン2', N'メモ2' , 'user1', '2022-06-11 15:10:00', null, null); insert into dbo.employee values (3, N'テスト プリン3', null, null, null, null, null);


3) select文を利用して、employeeテーブルに追加したデータが出力されることを確認する。
select * from dbo.employee


bcpコマンドによるCSVエクスポート
bcpコマンドを利用すると、SQL Serverのテーブルのデータを、CSVファイルに出力することができる。その手順は、以下の通り。
1) スタートメニューを起動し、「Windows システムツール」から「コマンドプロンプト」を選択する。
2) bcpコマンドの配置されているディレクトリに移動する。
cd C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn dir

3) bcpコマンドを利用して、employeeテーブルのデータをCSVファイル出力する。
bcp dbo.employee out "C:\tmp\employee_out.csv" -c -q -S localhost -U USER01 -P USER01 -t , -d master

なお、bcpコマンドは、「bcp (テーブル名) out (出力するCSVファイル名) -c -q -S (ホスト名) -U (ユーザー名) -P (パスワード) -t (区切り文字) -d (データベース名)」という形式で指定している。
5) bcpコマンドを利用して、SELECT文で指定したデータをCSVファイル出力する。
bcp "SELECT * FROM dbo.employee" queryout "C:\tmp\employee_out_2.csv" -c -q -S localhost -U USER01 -P USER01 -t , -d master

なお、bcpコマンドは、「bcp (SELECT文) queryout (出力するCSVファイル名) -c -q -S (ホスト名) -U (ユーザー名) -P (パスワード) -t (区切り文字) -d (データベース名)」という形式で指定している。

bcpコマンドによるCSVインポート
bcpコマンドを利用すると、CSVファイルのデータを、SQL Serverのテーブルに追加することができる。その手順は、以下の通り。
1) インポートする予定のCSVファイルの内容は、以下の通り。
2) インポートする前のemployeeテーブルのデータは、以下の通り。
3) コマンドプロンプトを起動し、bcpコマンドの配置されているディレクトリに移動する。
cd C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn

4) bcpコマンドを利用して、CSVファイルのデータをemployeeテーブルに追加する。
bcp dbo.employee in "C:\tmp\employee_in.csv" -c -q -S localhost -U USER01 -P USER01 -t , -d master

なお、bcpコマンドは、「bcp (テーブル名) in (インポートするCSVファイル名) -c -q -S (ホスト名) -U (ユーザー名) -P (パスワード) -t (区切り文字) -d (データベース名)」という形式で指定している。
5) インポートした後のemployeeテーブルのデータは、以下の通り。
6) 4)で実行したコマンドを再度実行すると、以下のように、PRIMARY KEY重複エラーとなってしまうことが確認できる。
要点まとめ
- bcpコマンドを利用すると、SQL ServerのテーブルのデータをCSVファイルに出力したり、逆にCSVファイルのデータをSQL Serverのテーブルに書き込んだりすることができる。