『自由力』を身に付けるサイト「リバトレ」も見てね!!

【Oracle】バッチファイルからSQLを実行する方法!

悩んでいる男の子

バッチからSQLを実行するのってどうやるの??

こんな悩みを解決します。

  • 本記事の内容
  • バッチファイルからSQLを実行する方法
  • 具体的なソースコード
  • 本記事の執筆者
プロフィール
どこの写真だよ
  • 長身ガリガリ自称イケメン(1993/4/1生)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 副業(物販)5か月目で月利30万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、投資を細々とやっています。
  • 物販は彼女と楽しみながらやってます!

ということで今回は、バッチからSQLを実行する方法を解説します!

今回はOracle編なので、バッチからSQL*Plusを実行する流れになります。

目次

バッチからSQLを実行する流れ

Oracleの場合、SQLを実行する際に「SQL*Plus」を利用します。

SQL*Plusは、実行時にSQLファイルを引数として渡すことができます。

つまり、SQLファイルをバッチで作成し、作成したSQLファイルをSQL*Plusに渡してあげればよいということになります。

  1. バッチでSQLファイルを作成する
  2. 作成したSQLファイルをSQL*Plusに渡す
  3. 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ファイルの中身を作成します。

「>>」により、追記モードでファイルに文字列を出力しています。

40行目の「exit」は記載しないとSQL*Plusが終了しないので忘れないように!

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に渡す方法がある。
【Batch】バッチからSQLを実行する方法!Oracle編!

この記事が気に入ったら
フォローしてね!

シェアするんやで!

~ リバトレ ~

お金や副業に関する情報を発信しているよ!

この記事を書いた人

いずみんのアバター いずみん 自由力発信おじ

【自由力発信】うさんくさ笑 | 副業物販で5ヶ月目に月利30万円達成⇨脱サラ予定 | 物販(アパレルせどり)・アフィリエイト・投資で自由になるための情報を発信中?笑 | 元エンジニア | 保有資格約20個

関連記事

コメント

コメントする

目次
閉じる