
バッチからSQLを実行する方法が分からないんだよね。。
こんな悩みを解決します。
- 本記事の内容
- バッチファイルからSQLを実行する方法
- 具体的なソースコード
- 本記事の執筆者
プロフィール


- 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
- 物販月利50万円⇒脱サラ
- 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
- 物販は彼女と楽しみながらやっています!
今回は、バッチからSQLを実行する方法を解説します。



すぐ読み終わるので、是非最後まで読んでみてください!
よく読まれている記事はこちら!
目次
バッチからSQLを実行する流れ
Oracleの場合、SQLを実行する際に「SQL*Plus」を利用します。
SQL*Plusは、実行時にSQLファイルを引数として渡すことができます。
つまり、SQLファイルをバッチで作成し、作成したSQLファイルをSQL*Plusに渡してあげればよいということになります。
- バッチでSQLファイルを作成する
- 作成したSQLファイルをSQL*Plusに渡す
- SQL*Plusを実行する
SQLを実行するバッチのソースコード
以下がソースコードになります。
echo off
setlocal enabledelayedexpansion
rem -------------------------
rem 共通変数定義
rem ※環境に合わせる事
rem -------------------------
set APP_ROOT=%~dp0
rem -------------------------
rem ORACLE接続情報
rem ※環境に合わせる事
rem -------------------------
set ORA_USER_NAME=SAMPLE
set ORA_PASSWORD=SAMPLE
set ORA_IP_ADDR=127.0.0.1
set ORA_PORT_NUMBER=1521
set ORA_SERVICE_NAME=SAMPLE
rem -------------------------
rem 内部変数定義
rem -------------------------
set errcode=0
set msgtext=バッチ
rem -------------------------
rem バッチ処理開始ログコンソール出力
rem -------------------------
echo %msgtext%開始:%date% %time:~0,8%
rem -------------------------
rem sqlplus引数ファイル作成
rem -------------------------
set OUTPUT_FILENAME=%APP_ROOT%\sample.sql
type nul > %OUTPUT_FILENAME%
echo set echo off head off feed off recsep off >> %OUTPUT_FILENAME%
echo DELETE FROM T_SAMPLE; >> %OUTPUT_FILENAME%
echo exit >> %OUTPUT_FILENAME%
rem -------------------------
rem sqlplus開始
rem -------------------------
sqlplus %ORA_USER_NAME%/%ORA_PASSWORD%@%ORA_IP_ADDR%:%ORA_PORT_NUMBER%/%ORA_SERVICE_NAME% @%OUTPUT_FILENAME%
rem -------------------------
rem sqlplus引数ファイル削除
rem -------------------------
del %OUTPUT_FILENAME%
rem -------------------------
rem 実行結果取得
rem -------------------------
set errcode=%errorlevel%
rem -------------------------
rem バッチ処理終了ログコンソール出力
rem -------------------------
if %errcode% == 0 (
echo %msgtext%正常終了:%date% %time:~0,8%
exit %errcode%
) else (
echo %msgtext%異常終了:%date% %time:~0,8%
exit %errcode%
)
解説
echo set echo off head off feed off recsep off >> %OUTPUT_FILENAME%
echo DELETE FROM T_SAMPLE; >> %OUTPUT_FILENAME%
echo exit >> %OUTPUT_FILENAME%
38~40行目でSQLファイルの中身を作成します。
「>>」により、追記モードでファイルに文字列を出力しています。
sqlplus %ORA_USER_NAME%/%ORA_PASSWORD%@%ORA_IP_ADDR%:%ORA_PORT_NUMBER%/%ORA_SERVICE_NAME% @%OUTPUT_FILENAME%
45行目でSQL*Plusを実行します。
del %OUTPUT_FILENAME%
50行目でSQLファイルを削除します。
SQLファイルはSQL*Plusで使用するために一時的に作成しただけなので、処理終了後は削除します。
まとめ
今回は、バッチからSQLを実行する方法を解説しました。
分かってしまえば意外と簡単ですよね。
ではまた!
まとめ
- バッチからSQLファイルを実行する方法として、バッチ内でSQLファイルを作成し、SQL*Plusに渡す方法がある。
- 自由な生き方がしたいなら!
自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。
当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。
稼ぐスキルを身に付けよう!!
コメント