web-dev-qa-db-ja.com

SQLPLUSで一度に複数のSQLスクリプトファイルを実行したい

一度に複数の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

9
rahul jain

これを行う単一の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を呼び出します)

10

複数のファイルを実行するシェルスクリプトを作成する価値があるかもしれません。

#!/bin/ksh
sqlplus user/password@instance <<EOF
@a.txt
@a1.txt
exit
EOF

構文の詳細については、 Here Document を参照してください

2
Eric

いくつかのトリックとコマンドは、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個のスクリプトを配置すると非常に便利です。

2
Manoj

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
2
carmellose

使用する *.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スクリプトが配置されているディレクトリを指します。

1
jiboOne

Windowsの場合、/ b * .sql + x final.sqlをコピーしてみてください

sqlplusユーザー/パスワード@ final.sql

1
AmolG

ここでも同様の解決策がありますが、反復したり、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
1
Cyva

Joseph Torreの特別な感謝

sqlplus login/password@server @filename

参照リンク

0