• 締切済み

バッチからの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キーを押下せずに、処理を実行させるためにはどうすればよろしいでしょうか。  初歩的な質問で申し訳ありませんが、宜しくお願い致します。

  • Oracle
  • 回答数1
  • ありがとう数1

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

いま、試せる環境にないので未検証ですが。 SQLファイル.sqlの内容は、そのものをコピペしてますか? 一行目はset trimspool on ですよね。 set feedback offをコメントアウトして、どうなりますか? もしかしたらSQLファイル.sqlの先頭行に空行(Enterのみ)を設けるとか。

関連するQ&A

  • タスク実行でコピーできない

    手動で以下の内容のバッチを起動すると問題なく指定の場所にコピーできますが タスクに登録して実行するとファイルは、作成されていますが指定の場所にコピー出来ません。 ◆バッチ echo on C:\oracle\product\10.2.0\client_1\BIN\sqlplus ****/*****@*** @C:\temp\Daily\TBL_USR.sql %1 %2 set CHECKLOG_DIR=\\******IPアドレス\test copy TBL_USR.csv %CHECKLOG_DIR%\TBL_USR.csv ◆SQL文 set UNDERLINE OFF SET COLSEP ',' set linesize 1000 set pagesize 25000 SET FEEDBACK OFF spool C:\temp\Daily\TBL_USR.csv SELECT a, b, c, d FROM TBL_USR WHERE DELKB <>1; spool off; exit; exit; ◆タスク結果 (0x1) ◆環境 windows Sever 2008 R2 Enterprise

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

    こんばんは。 現在、バッチジョブからSQLPlusを起動してSQLファイルの SQL文を実行して以下の処理をしたいと考えておりますが 技術敵には可能でしょうか? 1.3つのパラメータをユーザが入力 2.1つの値についてマスタを検索して存在しない場合はエラー。 3.2でマスタに存在した場合、パラメータで他のテーブルを更新。 現時点では入力されたパラメータで更新処理はできたのですが マスタをチェックして存在の有無の戻り値を取得して 処理を分岐するといったことができるのかよくわかりませんので どなたかご教授ください。

  • SQL初心者です。

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

  • shellからsqlplusでコマンドを順次実行

    shellスクリプトから sqlplus @AAA.sqlを実行する。 以下:AAA.sql @home/~/aaa.sql @home/~/bbb.sql quit; 以下:aaa.sql exec dbms_refresh('XXX'); 以下:bbb.sql set serveroutput on set linesize 1000 set pagesize 0 set trimspool on set feedback off whenever oserror exit 9 whenever sqlerror exit 5 MERGE ~ 中略 commit; exit ---------------- 以上、がソース内容です。 aaa.sqlでexitしていないのにbbb.sqlへ処理が移行しません。 ログ見てみるとリフレッシュコマンド実行後に接続が切れてしまっているようです。 処理概要ですが、あるMVをリフレッシュ後にそのMVを使用してMERGE文を実行するという処理です。 上記説明で原因特定は可能でしょうか? よろしくお願いいたします。

  • DOSから起動した際のSQLPLUSウィンドウ表示

    OS:WINDOWS NT4.0 ORACLE Personal 7.3.4 VBのアプリケーションを作成しています。 行う内容は  (1)VBのフォームでボタン押下  (2)DOS(バッチファイル)起動  (3)バッチファイルよりORACLE SQLPLUS起動   (USERのDROP&CREATE実行)  (4)バッチファイルよりORACLE IMPORT実行   (指定ファイルのIMPORT) です。 処理的には問題ないのですが、(3)の実行時にSQL*PLUSのウィンドウが見えてしまいます。 (2)の実行時に「START /MIN ~(SQLPLUSコマンド)」を行っている為か、ORACLE9ⅰですとSQLPLUSの表示はされないのですが、今回対象の7.3.4だと見えてしまいます。 見栄えが悪いところを突っ込まれているので、最小化でも構わないのですが、SQLPLUSの起動オプション等には特に解決できるものは探すことができませんでした。  なにか有効な方法をご教授いただきたいです。 みなさま宜しくお願いします。

  • WindowsServer2008でタスク実行

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

  • sqlplusのspoolで空白行出現

    OS:Windows Server 2003 DB:Oracle10g(10.2.0) sqlplusでselect結果をcsvファイルにspoolする際に空白行が出力されて困っています。 以下のsqlを実行した場合、 ----- SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET PAGESIZE 0 SET LINESIZE 2000 SET TERMOUT OFF SET TRIMSPOOL ON spool test.csv select '"'||col1||'","'||col2||'","'||col3||'"' from table; spool off ----- 改行を含むカラムを含む行の後に空白行が出力されます。 (2レコード目のcol3は"g"と"h"の間に改行コードがあるデータが格納されているが、何故か2レコード目と3レコード目の間に空白行が出力される) ----- "abc","def","ghi" "abc","def","g hi" "abc","def","ghi" ----- これはsqlplusの仕様でしょうか。 2行目と3行目の間の空白行を削除してspoolする方法はありますでしょうか。 なお、改行を含むカラムの改行を改行以外の文字に置換して出力した場合は、以下のように空白行が出現しません。 ----- "abc","def","ghi" "abc","def","gカイギョウhi" "abc","def","ghi" -----

  • SQLをバッチで実行

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

  • sqlplusでヘッダーが付かない

    サーバー:windows 2003server oracle10g クライアント:windows xp oracle10g 以下のsqlファイルをbatで起動し、テキストファイルを出力しています。 しかしながら、setのところにヘーダーを出力するよう宣言しているのに もかかわらず、出力されません。 どなたかおわかりになる方、いらっしゃいませんでしょうか? set echo off set heading on set underline off set termout off set pause off set pagesize 0 set trimspool on set feedback off set termout off set linesize 1000 set lines 30000 spool hoge.txt select aaa||CHR(9)|| bbb||CHR(9)|| ccc||CHR(9)|| ddd from M_JITU; spool off EXIT

  • batでsqlplusによる前月データを取得

    sqlplusにてbatファイルを起動するだけで前月のデータを取得しようとしていますが、 ネットで検索等してもなかなかうまく行きません。 以下のようにbatファイルを起動すると、常に前月のT_URIのデータを取得させたいのですが、 どのようにすれば宜しいでしょうか?ご教示頂けると助かります。(期間の日付をじかに入力すれば、取得できたのですが、同じように取得したいテーブルが複数あるので) 月初日は常に1日、月末日は常に31日にして、前月をbatファイルかsqlファイル上で計算させる方法はないのでしょうか? (会社の業務でoracleのデータベースから抜き出そうとしています。) SQLPLUS ABCD/ABCD@ORACLE.XYZ.WW @0031_ymd.sql PAUSE ↓0031_ymd.sql set heading on set echo off set underline off set termout off set pause off set pagesize 0 set trimspool on set feedback off set termout off set linesize 1000 set lines 30000 spool D:\hoge.csv SELECT * FROM T_URI S WHERE AND S.KJN_YMD >= yyyymmdd AND S.KJN_YMD <= yyyymmdd