presents by IT Consulting 109

SQL Plus 簡易接続 応用編

概要

ORACLEへの接続を簡易的に実行できるバッチファイルの応用について記載。

 

以下の構成で実行する想定

読み込みたいSQLファイルが配置されているパス
c:\File\sample.sql

BATを実行するパス
c:\File\system\sql_system@orcl.bat

LOGの出力パス
c:\File\system\yyyymmdd_hhmm.log

 

バッチファイルの実行階層はSQLの読み込み階層のひとつ下に配置する事で、バッチファイルで出力されるログをバッチファイル単位で集約できるメリットがある。

ログの出力先を変数とする必要が無いので、配置して実行することが容易である

 

手順

以下のファイルを作成し、実行したいSQLファイルのディレクトリ配下に同名のサブフォルダを作成後コピーして、バッチファイルを実行します。

 

■BASE.SQL

SET ECHO OFF

-- 時刻を表示
SET TIME ON

SET VERIFY OFF

-- カレントディレクトリ
DEFINE SQL_RUN_PATH ='&1';
COLUMN SQL_RUN_PATH NEW_VALUE SQL_RUN_PATH FORMAT a75
SELECT '&SQL_RUN_PATH' SQL_RUN_PATH FROM DUAL;

-- ログの出力先
DEFINE LOG_FILE_PATH ='&2\';

-- 拡張子を指定
DEFINE LOG_FILE_EXT = .log

-- ファイル名を日付+時刻で指定
COLUMN LOG_PATH NEW_VALUE LOG_FILE FORMAT a75
SELECT '&LOG_FILE_PATH' || to_char(sysdate,'yyyymmdd_hh24miss') || '&LOG_FILE_EXT' LOG_PATH FROM DUAL;

-- ログの出力
SPOOL '&LOG_FILE' APPEND

■SQLPLUS_SYSTEM@ORCL.BAT

@echo off

cd /d %~dp0
REM ■LOGの出力パス %DIR_LOG%
SET DIR_LOG=%CD%

REM ■BATの実行パス %DIR_BAT%
SET DIR_BAT=%CD%

cd ..
REM ■SQLの実行パス %DIR_SQL%
SET DIR_SQL=%CD%

sqlplus system/********@orcl @%DIR_BAT%\base.sql %DIR_SQL% %DIR_LOG%

 

補足

「SQLPLUS_SYSTEM@ORCL.BAT」ファイル内で、BATとSQLのカレントディレクトのを合わせたい場合、「cd ..」を削除する

この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です