一度に複数のSQLスクリプトファイルを実行する必要があります。
SQLPLUSでコマンドを記述する必要があるたびに
SQL> @d:\ a.txt SQL> @d:\ a2.txt SQL> @d:\ a3.txt SQL> @ d:\ a4.txt
すべてのファイルを1つのフォルダーに入れて、@d:\final.txt
または@d\final.bat
これを行う単一のSQL * Plusコマンドはありませんが、他のすべてを呼び出す単一のスクリプトを作成できます。
以下をバッチファイルに入れます
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
そのバッチファイルを実行すると、バッチファイルと同じディレクトリにall.sql
という名前の新しいスクリプトが作成されます。バッチファイルと同じディレクトリで、拡張子.sql
が付いたすべてのファイルを検索します。
次に、sqlplus user/pwd @all.sql
を使用してすべてのスクリプトを実行できます(または、all.sql
スクリプトの作成後にバッチファイルを拡張してsqlplus
を呼び出します)
複数のファイルを実行するシェルスクリプトを作成する価値があるかもしれません。
#!/bin/ksh
sqlplus user/password@instance <<EOF
@a.txt
@a1.txt
exit
EOF
構文の詳細については、 Here Document を参照してください
いくつかのトリックとコマンドは、master.sqlファイルの生成に役立ち、その場所から実行できます。
c:\direcotory_location\dir *.sql /-t /b >master.sql
親ディレクトリに移動し、notepad ++を使用してmaster.sqlを開き、master.sql行を削除し、正規表現を使用して置き換えます。
\n with \n @
コマンドに移動コマンドから
C:\root_directory\sqlplus user/password @master.sql
このプロセスは、1つのディレクトリに30〜40個のスクリプトを配置すると非常に便利です。
GNU Linuxを使用している場合は、 プロセス置換 を使用できます。
sqlplus USERNAME/PASSWORD@DOMAIN < <(cat a.txt a2.txt a3.txt a4.txt)
# ... or a for loop on input files, inside the process substitution
または、.pdc
ファイルを作成し、SQLスクリプトをリストします。
-- pdc file
@a.txt;
@a2.txt;
@a3.txt;
@a4.txt;
sql plusを呼び出します。
sqlplus USERNAME/PASSWORD@DOMAIN < my_scripts.pdc
使用する *.PDC
このような拡張ファイル
install.pdcファイルの内容
whenever sqlerror exit sql.sqlcode
Prompt started!
Prompt 1.executing script 1
@@install/01.script_1.sql
Prompt 2.executing script 2
@@install/02.script_2.sql
Prompt 3.executing script 3
@@install/03.script_3.sql
Prompt finished!
どこ @@install/
は、SQLスクリプトが配置されているディレクトリを指します。
Windowsの場合、/ b * .sql + x final.sqlをコピーしてみてください
sqlplusユーザー/パスワード@ final.sql
ここでも同様の解決策がありますが、反復したり、SQLファイル名を特別な形式にしたりする必要はありません。 1つのsqlファイルを作成して、1回実行します。
cat table_animal.sql > /tmp/temp.sql
cat table_horse.sql >> /tmp/temp.sql
cat table_fish.sql >> /tmp/temp.sql
sqlplus USERNAME/PASSWORD@DOMAIN @/tmp/temp.sql