この記事では
・バッチファイルから
・sqlcmdコマンドを使用して
・INSERT文を実行
するサンプルプログラムを記載します!
バッチファイルから
・SQLを直接実行
・SQLファイルを実行
する方法を記載します!
サンプルプログラムの概要
テーブル「EMPLOYEE」に対し、INSERT文を実行します。
↑実行前は何も登録されていません。
SQLファイル作成
INSERT文を記載したSQLファイルを作成します。
ファイル名
INSERT.sql
サンプルプログラム
INSERT INTO EMPLOYEE(
ID,
NAME,
SEX,
SECTION
)
VALUES(
'00002',
'佐藤次郎',
'男',
'経理課'
)
バッチファイル作成
以下2つを実行するバッチファイルを作成します。
・SQL文(INSERT文)
・上記で作成したSQLファイル
ファイル名
insert_sample.bat
サンプルプログラム
@echo off
REM #####################
REM ★接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM ユーザー名
REM set userName=XXXXX
REM パスワード
REM set password=XXXXX
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
上記で使用している「sqlcmd」の各オプションと指定する値は以下です。
オプション | 指定する値 |
---|---|
-S | サーバー名 |
-d | DB名 |
-U | ユーザー名 |
-P | パスワード |
-Q | SQL文 |
-i | SQLファイル |
※「sqlcmd」のオプションの一覧は以下の記事にまとめています。
実行結果
バッチファイルを実行すると、計2レコードがINSERTされた旨のメッセージが表示されます。
(1 行処理されました)
(1 行処理されました)
続行するには何かキーを押してください . . .
SELECT文でテーブル「EMPLOYEE」を確認すると、計2レコードがINSERTされていることを確認できます。
SQLファイル(INSERT.sql)を修正することで、
・バッチファイルは修正せずに実行するSQLを変更
できます!
※バッチファイルは修正しないため、バッチファイルの単体テスト等は不要。
よって
・「SQLを直接実行」よりも
・「SQLファイルを実行」の方が使い勝手が良い
と思います!
※バッチファイルの修正/単体テストが不要になるため。
参考①
以下の詳細については、公式サイトをご確認ください。
●sqlcmdについて
●SQLファイル(スクリプトファイル)を使用したsqlcmdの実行について
参考②
sqlcmdの実行結果を、変数へ格納することもできます。
詳細は以下の記事をご確認ください。
参考③
sqlcmdの実行結果(SELECT文の結果)を、CSVファイルへ出力することもできます。
詳細は以下の記事をご確認ください。
参考④
バッチファイルのノウハウサイトも運営しています。
合わせてご確認ください!