バッチファイルからsqlcmdコマンドを使用して、SQLを実行する

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

以下の2つの方法を記載します!
・バッチファイルからSQLを直接実行
・バッチファイルからSQLファイルを実行

サンプルプログラムの概要

以下のテーブル「EMPLOYEE」に対し、INSERT文を実行します。

↑実行前は何も登録されていません。

SQLファイル作成

INSERT文が記載されたSQLファイルを作成します。

●ファイル名
INSERT.sql

●記載するSQL

INSERT INTO EMPLOYEE(
	ID,
	NAME,
	SEX,
	SECTION
)
VALUES(
	'00002',
	'佐藤次郎', 
	'男', 
	'経理課'
)

サンプルプログラム作成

ファイル名

insert_sample.bat

サンプルプログラム

★「サーバー名」等の接続情報について
上部に変数として纏めています。環境に合わせて修正してください。

★「SQLを直接実行」の場合
Qオプションを指定して、実行するSQLを記載してください。

★「SQLファイルを実行」の場合
iオプションを指定して、実行するSQLファイルを記載してください。

ここではWindows認証を使用してSQL Serverへ接続しています。
SQL Server認証を使用した方法も記載していますが、コメントアウトしています。

@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 行処理されました)

(1 行処理されました)
続行するには何かキーを押してください . . .

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


SQLファイル(INSERT.sql)の中身を変更すれば、バッチファイルは変更せずとも実行するSQLを変えることができます!

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

タイトルとURLをコピーしました