バッチファイルでCSVファイルをSQLServerにインポートする
バッチファイルでCSVファイルをSQLServerにインポートする方法を紹介します。
コーディング例
test.bat
@ECHO OFF REM DB接続情報 SET SERVER=localhost\TEST SET DATABASE=TestDB SET USER_ID=testuser SET PASSWORD=testuser REM CSVファイル SET CSV_PATH=C:\test.csv REM ワークテーブル作成 SET SQL= SET SQL=%SQL% IF EXISTS(SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'WRK_CsvData')) DROP TABLE WRK_CsvData SET SQL=%SQL% CREATE TABLE WRK_CsvData ( SET SQL=%SQL% Column1 NVARCHAR(50) SET SQL=%SQL% ,Column2 NVARCHAR(50) SET SQL=%SQL% ,Column3 NVARCHAR(50) SET SQL=%SQL% ); SQLCMD -S %SERVER% -d %DATABASE% -U %USER_ID% -P %PASSWORD% -Q "%SQL%" REM インポート BCP WRK_CsvData IN "%CSV_PATH%" -S %SERVER% -d %DATABASE% -U %USER_ID% -P %PASSWORD% EXIT /B
test.csv
AAA,BBB,CCC DDD,EEE,FFF
実行結果
| Column1 | Column2 | Column3 |
|---|---|---|
| AAA | BBB | CCC |
| DDD | EEE | FFF |
test.batの4行目~7行目ではデータベースへの接続情報を設定しています。
10行目ではインポートを行うCSVファイルのパスを変数CSV_PATHに設定しています。
13行目~19行目ではCSVファイルのインポート先となるテーブルを作成するSQL文を変数SQLに設定しています。
14行目ではデータベースのテーブルを管理するsys.tablesより、テーブル"WRK_CsvData"が存在するかを確認し、存在すればテーブルを削除しています。
20行目のSQLCMDにて、変数SQLを実行し、実際にテーブル"WRK_CsvData"を作成しています。
23行目ではBCPコマンドにて、変数CSV_PATHに設定したCSVファイルを、テーブル"WRK_CsvData"にインポートしています。
このBCPコマンドを使用することで、DBサーバ上へのアクセスができなくても、データベースへの接続が可能であればどこからでもインポートが可能です。
以上、バッチファイルでCSVファイルをSQLServerにインポートする方法の紹介でした。








