バッチファイルで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にインポートする方法の紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ