- 締切済み
SQLをバッチで実行
掲題の件で少し教えていただきたいことがあります。 バッチファイルでSQLPLUSを起動し、 @XXXXXXXXX.SQL >> XXX.log(バッチのログ)と 実行するのですが、このSQL文がインサート文や アップデート文など通常のSQL文だと バッチでのリダイレクションの結果に XX行作成されました。とかXX行更新されましたとか 出力されると思うのですが、 実行するSQL文の中でさらに、 @XXXXXXXXX.SQL と記述していると どのようにログファイルに出力されますか? XX行作成されました。とかXX行更新されましたとか が出るとうれしいのですが… わかりにくい質問かもしれませんがお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- neko3839
- ベストアンサー率37% (100/269)
>SPOOLだと@XXXXX.sqlの本数文のログファイルが >できてしまうので… 複数のログファイルを結合して1つのログファイルにまとめるのでも良いでしょうか? OSがWindows系であれば、 copy file01.log + file02.log + file03.log outfile.log で結合してはいかがでしょうか。
- mebun
- ベストアンサー率45% (10/22)
Batファイルの代わりに手で実行してみては。 Poolonをsqlplusの先頭いれて最後にspool offで よいのでは。 (1)sqlplusの起動 (2)spool on (3)sqlの起動 @xxx1.sql (4)sqlの起動 @xxx2.sql (5)spool off (6)sqlplusのexit でspoolを確認してみて下さい。 (3),(4)の中でもsqlを呼び出した場合にも 同じspoolに出力されませんか。 sqlpluを別に起動するとだめだと思いますが。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
スクリプト呼出を何段重ねても、普通に表示が出るはずです。
- PrintScree
- ベストアンサー率25% (538/2091)
そういうときは、バッチのリダイレクトではなくSQL の SPOOL分を使った方がいいですよ。 SQL>SPOOL "ログファイル名" SQL>SPOOL OFF バッチみたいに、追加は出来ないので @Bat.sql 毎にSPOOLファイルを作成します。
補足
すいません。少し説明不足でした。 ひとつのSQL内で @XXXXX.sql を何本か実行するのですが これらをまとめてひとつログファイルに 出力したいのです。 SPOOLだと@XXXXX.sqlの本数文のログファイルが できてしまうので…
お礼
みなさま、締め切りおよびお礼が 遅くなり申し訳ありません。 参考にさせていただきます。 ありがとうございました。