2012-04-27 27 views
0

明日は私の仕事日になります( Colls、私のSQLスクリプトは、-bashスクリプト。それは?:UnixのbashファイルでSQLスクリプトを実行する前に、SQLローダーの作業が終了するまで待つ

#!/bin/bash 

echo -------- uploader.sh v 0.1 -------- 
# @echo; 

export NLS_LANG=russian_cis.ru8pc866 
export NLS_NUMERIC_CHARACTERS='.' 

ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1/bin 
export ORACLE_HOME 
PATH=$ORACLE_HOME 
export PATH 

sqlldr userid=myscheme/[email protected]_DB control=control_file.ctl LOG=test_log.log errors=100 


wait #here i want to wait sqlloader executing 

sqlplus userid=myscheme/[email protected]_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql 

の下に右のコードです私はウェイト機能hereについて読んだ。

答えて

2

シェルスクリプトは、前のコマンドが完了した後に、デフォルトでは、唯一のコマンドを実行します。これに対する唯一の例外はあります&を使用してバックグラウンドスレッドで何かを実行すると、実行する

sqlldr userid=myscheme/[email protected]_DB control=control_file.ctl LOG=test_log.log errors=100 
sqlplus userid=myscheme/[email protected]_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql 

は、既にあなたが望むことをします。あなたがメインスレッドで実行を継続できるように、別のスレッドを使用したい場合は

しかし、あなたはsqlldrコマンドが終了しながら、do other stuffにあなたをできるようになります

sqlldr userid=myscheme/[email protected]_DB control=control_file.ctl LOG=test_log.log errors=100 & 
pid=$! 
#do other stuff 
wait $pid 
sqlplus userid=myscheme/[email protected]_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql 

を使用することができます。プログラムはsqlplusを呼び出す前にsqlldrコマンドが完了するのを待ちます。

+0

アップ、申し訳ありませんが、 "sqlldrコマンドをバックグラウンドにsqlldrで実行すると"わかりませんでした。あなたは説明できますか? – May12

+0

@ May12私の編集を参照してください。 –

+0

ああ!今それは明らかです!非常に非常に非常にありがとう! =) – May12

関連する問題