• ベストアンサー

SQL初心者です。

SQL初心者です。 SQLPlusをコマンドプロンプトで実行していたのですが、定型のSQL文のためバッチファイルにてスケジュール実行したいと考えています。 コマンドプロンプトを開いて実行していたときはspoolした内容に実行sqlも出力されていたのですが、バッチファイルで同じようにspoolすると実行sqlは出力されず結果のみになってしまいます。 実行したsqlも出力させるには特別にsetするものがあったりするのでしょうか? echoのon、offは試しましたが結果は同じでした。 方法をご教示いただけたら助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

set echo on で出力されるようになりませんか? こちらの環境(Windows7 Professional、Oracle10g XE)では下記のバッチで出力されます。 --test.bat sqlplus user/pass @test.sql --test.sql set echo on spool test.txt select sysdate from dual; spool off quit --出力されたtest.txtの内容 SQL> SQL> select sysdate from dual; SYSDATE -------- 13-06-14 SQL> SQL> spool off test.sqlのset echo onを削除した場合は結果のみが出力されました。

関連するQ&A

  • SQL実行結果取得

    バッチファイルにて、 sqlplusコマンドにより*.sqlファイルを実行し、 SQL文を発行していますが、 実行結果(処理件数)をコマンドプロンプト上 に表示したいのですが、どなたか。手法をご存知では ないでしょうか?

  • SQL*Plus:SPOOLコマンドでのSQL出力

    Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。 SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。 何か方法はないでしょうか? よろしくお願いします。

  • バッチからのSQLPLUS実行について

    はじめまして。 SQLPLUSでご質問ををさせてください。 環境 OS:Win2003server Oracle:10g バッチから、以下のようにSQLを実行したいと考えています。 バッチファイル sqlplus ID/PASS@インスタンス名 @SQLファイル.sql SQLファイル.sql set trimsool on set pagesize 0 set linsize 2000 set feedback off set colsep ',' spool on spool ABC.txt select * from xxx; spool off exit; ご質問  バッチファイルからSQLファイル.sqlが呼ばれているのですが、  接続時にENTERキーを押下しないと、後続の処理が実行されません。  ENTERキー押下後のメッセージ内容が  「バージョン情報の表示や、接続されました。」と出力されているため、  接続時の処理と思われます。    上記でENTERキーを押下せずに、処理を実行させるためにはどうすればよろしいでしょうか。  初歩的な質問で申し訳ありませんが、宜しくお願い致します。

  • WindowsServer2008でタスク実行

    困っています。 Dドライブ直下にバッチファイルでSQLplusを起動させ、同じディレクトリにある.sqlを実行させるファイルがあります。 このバッチファイルを手動で起動させデータを取得しようとするとsqlplusが起動し上手く処理が行われるのですが、タスクスケジューラに登録すると一瞬コマンドプロンプトの画面が開きすぐに閉じてしまいsqlplusが起動せず処理が開始されません。 webで色々調べてみましたがバッチファイルの先頭に @ECHO OFF cd /D %~ dp0をつけても駄目でした。 タスクスケジューラから右クリックして実行を選んで処理させるとこのタスクのプロパティの履歴には操作が完了されました。とタスクが完了しました。と表示されています。 一体、どのようにしたらバッチファイルが動くようになるのでしょうか? どなたか教えてください。 タスクスケジューラに登録したバッチファイルの内容は @echo off cd /D %~ dp0 d: sqlplus ユーザ名/パスワード@ネットサービス名 @X.sql exit です。 以上、よろしくお願いいたします。

  • 実行したSQLファイルの名前をファイルに出力する方法

    1つのSQLファイルの中で、複数のSQLファイルの実行するようになっていて、それを1度に実行するようにしているのですが、途中でエラーが発生している状態です。 どのSQLファイルでエラーが出ているか一目で分かるようにしたいのですが、SQLファイルの名前を実行結果と一緒にテキストファイルに出力したりできないでしょうか? sqlplusのspool機能では実行結果のみ出力されますが、複数のSQLファイルを実行した場合にどの段階でエラーが出ているのか分かりづらいのでよい方法があれば教えてほしいです。 よろしくお願いします。(DBはOracle 10gです。)

  • SQL*PLUSに関して

    標記の件に関しまして 私はデータベースに関する知識は全く無いのですが SEが私のクライアントに設定した SQL*PLUSを使用してた売上データベースからのデータの抽出 機能がありまして これとは違う条件でのデータ抽出が必要となり 何とかSQL文を部分的に加工して目的が達成できるかどうか 調べているところであります。 ■疑問点■ SQL*PLUSのコマンドファイルは既に作成されていて @~でメモ帳ファイルに記述されているSQL文を 指定すればSPOOLでデータが別のテキストファイルに 抽出されるようになっているようです。 この場合に 既存のSQL文が記述されているメモ帳ファイルの抽出条件を 加工してコマンドにて加工後のファイルを@~で実行すれば 必要としているデータを抽出することができるでしょうか? あと 現在使用しているSQLで下記の部分が共通して記述されて いるのですがこれはどういった意味でしょうか。 SET ECHO OFF SET HEADING OFF SET PAGESIZE 0 SET FEEDBACK OFF SET LINESIZE 30000 SET TRIMSPOOL ON SPOOL C:ファイルの場所 ■ここに抽出条件があるようです。■ SPOOL OFF EXIT 0; 大変申し訳ございませんが 現在はSEから購入したシステムから紙ベースで 出力して手作業で入力を行っているため 何とかデータベースから直接抽出できないか 模索しているところであります。 アドバイス頂けますでしょうか。 宜しくお願いします。

  • SQLをバッチで実行

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

  • 文字化けの解決方法

    Oracle12cR2のデータベースを構築中なのですが、あるSQLを実行したときだけSPOOLしたファイルの日本語が文字化けしてしまいます。 コマンドプロンプト上では日本語表示されているのですが、出力されたファイルのみに起こっているように見られます。 前後に実行しているSQLはコマンドプロンプト、SPOOLファイルともに日本語表示になっています。 SQLの実行結果自体に問題はないと思うので実害はないのだと思うのですが、エビデンスとしては直しておきたいところです。 どのような設定を確認すればよいでしょうか? SQLは以下の順で実行しています(添付ファイルの番号順) 1.DBFファイルを作成し、ALTERコマンドを実行(該当SQLの前に実行しているSQL) 2.実行SQLをまとめたSQLを実行(該当SQL) よろしくお願いします。

  • コマンドプロンプトのバッチファイル実行までの速度

    コマンドプロンプトのバッチファイルを作成したのですが このバッチファイルの実行するまでの処理速度を、コマンドプロンプト上に表示させたいのですが、どのようなコマンドを組めばよいのでしょうか? ちなみにバッチファイルの中身は、 @echo off start http://www.yahoo.co.jp です。よろしくおねがいします。

  • SQLファイル内のSQL実行ログ取得

    すいません、教えてください。 以下のようなCMDバッチを作成しました。 TEST.cmd------------ sqlplus -s ID/PASS@DB @MAIN.sql 'SUB1.sql' 'SUB2.sql' > MAIN.log echo %ERRORLEVEL% MAIN.sql------------ @&1 @&2 commit; quit; これを実行した場合、MAIN.sqlの最後のコマンドquit;の 実行結果を返してきているのでしょうか? SUB1.sql、SUB2.sqlで失敗していても%ERRORLEVEL%で0が返ってきます。 MAIN内のそれぞれのsqlの実行結果ログを取得することは可能でしょうか? SUB.sqlの内容はいずれも単純なMERGE文です。 識者の方がいればご教示いただきたく存じます。 よろしくお願いいたします。

専門家に質問してみよう