複数のSQLを一度に実行するためのスクリプト


Oracle では、PL/SQL や CREATE 文 をファイルにしておいて、ファイルにしたスクリプトを実行することができる。

(Windows では) plsql を開き、下のように@マークの後にファイル名を続けて書いて Enter を押せば OK だ。

@"C:\Folder\xxx.sql"

それでは、ファイルが複数ある場合はどのようにすればよいだろうか。ひとつずつファイルを入力するのもひとつだが、それだと時間も手間もかかる。そこで、次のようなスクリプトを使用して一括でスクリプトを実行するためのファイルを作る。 (Windows 限定) (普段はもうちょっと別のことをやるために ForTables という定数・引数をつかっていろいろやっているため、引数に ForScripts, ForTables があるが、とりあえず下記のまま実行すればOK)

下のスクリプトは、拡張子を .js にして 保存しておく。

そして、このスクリプトと同じフォルダに、実行したいスクリプトをすべて入れておく(拡張子は.sqlにすること)。実行したいスクリプトがそろったら、スクリプトファイル(.js)をダブルクリックする。すると _out.sql というファイル名で実行すべきファイルが出来上がる。

最後に @”_out.sql” を実行すれば、すべてのスクリプトが一括で実行される。

補足

  • ForScripts は プロシージャ などの CREATE OR UPDATE で始まるスクリプトに使います。
  • ForTablesCREATE TABLE で始まるテーブル作成文に使います。 ファイル名は CREATE_TABLENAME.sql のようにしておきます。

複数フォルダに プロシージャ、ファンクション、テーブルなどと分けて格納している場合は次のようにしてすべてのフォルダのスクリプト実行用ファイルを作ります。