- - PR -
bat(バッチ)からのSQLPLUS実行、およびファイル出力について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-24 10:55
現在コマンドプロンプトよりbatファイルからSQLPLUSを実行して、
その結果をファイルに出力する方法を模索しています。 bat内で以下のような処理をしてみました。 -------------------------------------------------------------- echo set linesize 4000 > aaa.sql echo set heading off >> aaa.sql echo set echo off >> aaa.sql echo set feedback off >> aaa.sql echo SELECT CONCAT(CONCAT(OWNER,' '),CONCAT(CONCAT(REPLACE(object_type, ' ', '_'), ' '), object_name)) >> aaa.sql echo FROM sys.all_objects >> aaa.sql echo WHERE object_name LIKE '%VIEW%' >> aaa.sql echo ORDER BY owner,object_type, object_name; >> aaa.sql echo exit >> aaa.sql sqlplus -s user/pass@sid @aaa.sql > bbb.list ----------------------------------------------------------------- 私の思惑としては STEP.1 echoによって、aaa.sqlに実行するSQLを出力。 STEP.2 SQLPLUSをサイレントモードで起動。aaa.sqlを実行し、結果をbbb.listに出力。 の流れを想定していたのですが、 このbatを実行すると、 aaa.sqlは正常に作成され、SQLも書き込まれているのですが、 bbb.listは作成されているものの、SQLの実行結果が書き込まれていません。 (ゼロByteのbbb.listが作成されてしまいます) aaa.sqlに吐き出されたSQL文自体には問題なく、 単純にローカルで実行すれば、結果が返ってきます。 なにが原因で書き込みに失敗しているのか不明で頭を抱えています。 どなたかご教授をおねがいできませんでしょうか。 なお、DBはOracle 10gです。 [ メッセージ編集済み 編集者: yasu 編集日時 2007-07-24 10:58 ] |
|
投稿日時: 2007-07-24 11:36
echo の羅列の中に echo spool bbb.list >> aaa.sql を追加してみてはいかがでしょう。
で、コマンドラインの > bbb.list は外す方向で。 _________________ もしもし@RMAN 友の会 [ メッセージ編集済み 編集者: もしもし 編集日時 2007-07-24 11:38 ] |
|
投稿日時: 2007-07-24 11:43
commandlineのuser名、password、TNS名のいずれかが間違っている可能性は
ありませんか? あと、空白が足りないとか。 |
|
投稿日時: 2007-07-24 12:26
>もしもしさん
アドバイス、誠にありがとうございます。 説明足らずでしたが、 SPOOLを使用した吐き出し方法は既に確認済みで、 ご説明頂いている方法で実装できることは分かっております。 しかしながら今回の課題は sqlplus -s user/pass@sid @aaa.sql > bbb.list の記述でなぜ結果が書き出されないのかということになっております。 最悪の場合、ご指南頂いた方法に辿り着くことになるかとは考えております。 >未記入さん アドバイス、誠にありがとうございます。 コマンドラインからの入力に関しましても確認済みなので おそらくはご指摘いただいた問題は発生していないと思われます。 (サイレントモードをオフ、およびexitをなしにしてSQLPLUSが起動し、 結果が返る事を確認しました) [ メッセージ編集済み 編集者: yasu 編集日時 2007-07-24 12:27 ] |
|
投稿日時: 2007-07-24 12:52
sqlplus -s user/pass@sid @aaa.sql > bbb.list
↓ sqlplus -s user/pass@sid @aaa.sql 2> bbb.list 上記のように変更して実行した場合、bbb.listに何か出力されますか? |
|
投稿日時: 2007-07-24 12:55
同じようなバッチファイルをWindowsXP上で試して動作しましたよ。
接続しているSIDなりユーザなりが、テストした対象と異なって いるため、SELECT文の条件でヒットするレコードが存在しないと かではないでしょうか。 |
|
投稿日時: 2007-07-24 12:56
こんにちは。
コマンドラインからSQLPLUSを起動した場合、 新しいコマンドプロンプトが起動したりしませんか? 10gはならなかったと思うのですが・・・ 8iならsqlplusコマンドだと新しいプロンプトが起動されてしまうので、 %ORACLE_HOME%\binにあるplus80コマンドでsqlplusを起動していました。 以上です、ご参考までに。 |
|
投稿日時: 2007-07-24 13:01
>ゆうじんさん
アドバイス、誠にありがとうございます。 ご教授頂いた形で実行してみましたが、 bbb.listにはなにも出力されていませんでした(ゼロByteのbbb.listのみ) これは、コマンドオプションかなにかによるものでしょうか。。。 |