• 締切済み

SQLをバッチで実行

掲題の件で少し教えていただきたいことがあります。 バッチファイルでSQLPLUSを起動し、 @XXXXXXXXX.SQL >> XXX.log(バッチのログ)と 実行するのですが、このSQL文がインサート文や アップデート文など通常のSQL文だと バッチでのリダイレクションの結果に XX行作成されました。とかXX行更新されましたとか 出力されると思うのですが、 実行するSQL文の中でさらに、 @XXXXXXXXX.SQL と記述していると どのようにログファイルに出力されますか? XX行作成されました。とかXX行更新されましたとか が出るとうれしいのですが… わかりにくい質問かもしれませんがお願いいたします。

みんなの回答

  • neko3839
  • ベストアンサー率37% (100/269)
回答No.4

>SPOOLだと@XXXXX.sqlの本数文のログファイルが >できてしまうので… 複数のログファイルを結合して1つのログファイルにまとめるのでも良いでしょうか? OSがWindows系であれば、 copy file01.log + file02.log + file03.log outfile.log で結合してはいかがでしょうか。

Ryo921
質問者

お礼

みなさま、締め切りおよびお礼が 遅くなり申し訳ありません。 参考にさせていただきます。 ありがとうございました。

  • mebun
  • ベストアンサー率45% (10/22)
回答No.3

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を別に起動するとだめだと思いますが。

回答No.2

スクリプト呼出を何段重ねても、普通に表示が出るはずです。

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

そういうときは、バッチのリダイレクトではなくSQL の SPOOL分を使った方がいいですよ。 SQL>SPOOL "ログファイル名" SQL>SPOOL OFF バッチみたいに、追加は出来ないので @Bat.sql 毎にSPOOLファイルを作成します。

Ryo921
質問者

補足

すいません。少し説明不足でした。 ひとつのSQL内で @XXXXX.sql を何本か実行するのですが これらをまとめてひとつログファイルに 出力したいのです。 SPOOLだと@XXXXX.sqlの本数文のログファイルが できてしまうので…

関連するQ&A