
この記事では
・バッチファイルからINSERT文を実行
するサンプルプログラムを記載します!

バッチファイルから
・SQLを直接実行
・SQLファイルを実行
する方法を記載します!
サンプルプログラムの概要
以下のテーブル「EMPLOYEE」に対し、INSERT文を実行します。

↑実行前は何も登録されていません。
SQLファイル作成
INSERT文が記載されたSQLファイルを作成します。
●ファイル名
INSERT.sql
●記載するSQL
INSERT INTO EMPLOYEE(
ID,
NAME,
SEX,
SECTION
)
VALUES(
'00002',
'佐藤次郎',
'男',
'経理課'
)
バッチファイル作成
ファイル名
insert_sample.bat
サンプルプログラム
@echo off
REM #####################
REM 接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM ユーザー名
REM set userName=sampleUserName
REM パスワード
REM set password=password
REM #####################
REM Windows認証の場合
REM #####################
REM ★SQLを直接実行
sqlcmd -S %dbServer% -d %dbName% -E -Q "INSERT INTO EMPLOYEE(ID,NAME,SEX,SECTION) VALUES('00001','鈴木一郎','男','営業課')"
REM ★SQLファイルを実行
sqlcmd -S %dbServer% -d %dbName% -E -i INSERT.sql
REM #####################
REM SQL Server認証の場合
REM #####################
REM ★SQLを直接実行
REM sqlcmd -S %dbServer% -d %dbName% -U %userName% -P %password% -Q "INSERT INTO EMPLOYEE(ID,NAME,SEX,SECTION) VALUES('00001','鈴木一郎','男','営業課')"
REM ★SQLファイルを実行
REM sqlcmd -S %dbServer% -d %dbName% -U %userName% -P %password% -i INSERT.sql
pause
実行結果
バッチファイルを実行すると、1レコードがINSERTされた旨のメッセージが表示されます。
(1 行処理されました)
(1 行処理されました)
続行するには何かキーを押してください . . .
SELECT文でテーブルを確認すると、データがINSERTされていることが確認できます。

↑「SQLを直接実行」と「SQLファイルを実行」のそれぞれのINSERT文により、
データが登録されました!

SQLファイル(INSERT.sql)の修正により、
バッチファイルは修正せずに実行するSQLを変更する
ことができます!
※修正が無ければ、バッチファイルの単体テスト等は不要。

よって
・「SQLを直接実行」よりも
・「SQLファイルを実行」の方が
使い勝手が良いと思います!