2012-02-08 16 views
1

シェル・スクリプト内に複数のSQL * PLUS接続を持たせることはできますか?シェル・スクリプト内のSQL * PLUS接続に関する問題

SQL * PLUSのCOPYコマンドを使用して、あるデータベースから別のデータベースに表のデータをコピーするためのシェル・スクリプトを作成しました。データベースリンクを作成する特権がないので、私はCOPYコマンドを使用しています。

約50個のテーブルのデータをコピーする必要があります。データセットが小さい場合、データセットは実行され、すべてのテーブルのデータがコピーされます。しかし、データセットが巨大な場合、スタックされ、UNIXマシンにセッション非アクティブメッセージが表示されます。

私は文を分割して考えて、以下のように書きました。しかし、 "SP2-0042:不明なコマンド" END1 " - 残りの行は無視されました。と "SP2-0042:不明なコマンド" END " - 残りの行は無視されました。"

#!/bin/bash 
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8 
export PATH=$PATH:$ORACLE_HOME/bin 

args=$# 

if [ $args == 1 ] 
then 
    echo "Shell script started" 
else 
    echo "Wrong number of arguments" 
exit 1 
fi 

time_start=`date +%H%M%S` 
echo $time_start 

    sqlplus -s srcUN/[email protected] <<END1  
    COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1; 
    COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1; 
    END1 

    sqlplus -s srcUN/[email protected] <<END2 
     COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab3 USING SELECT * FROM tab3 WHERE col1 = $1; 
    END2 

#END 

この問題を解決してもらえますか?

おかげで、 Savitha

+0

あなたの質問のタイトルはちょっと誤解を招いています。これは、シェルスクリプトの質問のようです。タイトルを変更すると、これを見ているシェルスクリプトの専門家が増えるかもしれません。 – Jolta

+0

ありがとうございました。私はタイトルを変更しました...今はうまくいきたいです。 :) – Savitha

答えて

6

問題は、彼らが空白をリードしてきたので、END1END2を入力リダイレクションの終わりとして認識されていないということです。

これらの2行の空白をすべて削除すれば正常に動作します。

+0

ありがとうたくさんのCodo ... :) – Savitha

関連する問題