• ベストアンサー

batファイルからsql文実行

クライアントOS:WIN2000 Oracle:9i(サーバ(UNIX)上にあります) 現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。 (SQL文は単純にTBLをカウントしているだけです) ・batの中身 sqlplus %UID%/%PASS%@%SID% @test.sql > output 結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか? ・余分な情報 Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production に接続されました。

  • Oracle
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:
http://biz.rivus.jp/sqlplus_overview.html
hound777
質問者

お礼

問題解決しました。ありがとうございました。

その他の回答 (1)

回答No.2

オラクルのspool機能を使用してみてはいかがでしょうか? batの中身は sqlplus %UID%/%PASS%@%SID% @test.sql で結果をリダイレクトせず。 SQL文の中で --test.sqlの中身 spool output select * from cat; spool off quit です。spool 出力先ファイル です。 spool off するまでの出力をファイル出力します。 以上、参考になればと思います。

hound777
質問者

お礼

こういう代替案もあるのですね。 勉強になりました。ありがとうございます。

関連するQ&A

  • SQL*Plusの実行結果にSQL文も残したいです

    SQL*Plusをスクリプトファイルを使って実行した際、実行SQLの出力はできないものでしょうか? 以下のようにスクリプトファイルを使ってSQL*Plusを実行し、その結果をログファイルへ 残しています。この時ログファイルには、実行結果は出力されるのですが、実行SQLは 出力されないようです。なんとかして実行SQLと、実行結果を作業ログとして残したいと 考えているのですが、何かよい方法はないものでしょうか? [ama@rh01 test]$ sqlplus scott/tiger@orcl @test01.sql > test01.log ■環境 Red Hat Linux 4 Oracle10g ■以下test01.sqlの中身です。 ---ここから-------------- create table ex01 ( c1 number, c2 varchar2(10), c3 varchar2(40) ); insert into ex01(c1,c2,c3) values(1,'AA1','BBB1'); select * from ex01; update ex01 set c2='aa1' where c1 =1; select * from ex01; exit; ---ここまで-------------- ■以下ログファイルの中身です。 ---ここから------------------ [ama@rh01 test]$ cat test01.log 省略 With the Partitioning, OLAP and Data Mining options に接続されました。                       ←ここにcreate文を出力したいです。 表が作成されました。                       ←ここにinsert文を出力したいです。 1行が作成されました。                       ←ここにselect文を出力したいです。 C1       C2   C3 ---------- ---------- ---------------------------------------- 1        AA1   BBB1                       ←ここにupdate文を出力したいです。 1行が更新されました。                       ←ここにselect文を出力したいです。 C1      C2 C3 ---------- ---------- ---------------------------------------- 1 aa1 BBB1 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。 [ama@rh01 test]$ -------------------ここまで--------------- どなたか良いアドバイスいただけたらと思います。 どうぞよろしくお願いします。

  • SQLPLUS USER/PASSログインできない

    sqlplus testuser/passwd@TESTの形式ではログインできますが、sqlplus testuser/passwdだとORA-01034、ORA-27101が発生します。 ORACLE_SIDは正しくセットしていますが、どのように調査すればよいか分かりませんので、教えて下さい。 以下は実行結果です。 USER[2]% sqlplus testuser/passwd@TEST SQL*Plus: Release 11.2.0.1.0 Production on 水 1月 11 22:19:45 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL> exit Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切 断されました。 USER[3]% setenv ORACLE_SID TEST USER[4]% env | grep ORACLE ORACLE_SID=TEST ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1 ORACLE32_HOME=/home/oracle2/32Bit ORACLE_TERM=sun5 USER[5]% sqlplus testuser/passwd SQL*Plus: Release 11.2.0.1.0 Production on 水 1月 11 22:20:17 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist SVR4 Error: 2: No such file or directory プロセスID: 0 セッションID: 0、シリアル番号: 0

  • TeraTermで文字化けしてしまう

    TurboLinuxが入っている(バージョン不明)サーバにTeraTermにログインし、Oracleを操作するためSQLPLUSを起動しました。 無事に起動したのですが、ところどころ文字化けしてしまいます。 例えばログインすると Oracle9i Enterprise Edition Release ****** Production With the Partitioning option JServer Release *********** Production xxxxxxxxxxxxxxxxx SQL> (Xの部分が文字化け部) となってしまいます。 SELECT 文を発行してもよくわからない文字が表示されています。 どこか設定を変えれば直りますか? ちなみに接続しているPCはWindows2000 Professionalです。 TeraTermのバージョンは2.3です。 でもTeraTermの問題ではない気がします。なぜならVNCでログインし、GUIでデスクトップからSQLPLUSを起動しても同じ現象が発生するからです。 ご存知の方教えてください。 よろしくお願いします。

  • グループ化したSQL文のカウントについて

    オラクルを初めて2週間の初心者です。 tableA表からE_Codeをグループ化し、E_Codeの1の値が何個あるか、2の値が何個あるかカウントした値を求めたいのですがSQL文がわかりません。GROUP BYやCASE文などネットを見ながら試行錯誤しチャレンジしましたが、エラーとなり求めたい結果が取得できませんでした。 この場合どのようなSQL文を書いたらいいのでしょうか。 --tableA-- E_Code|K_Code 001  |   1 001  |   1 002  |   1 002  |   1 002  |   1 003  |   1 004  |   2 005  |   1 005  |   1 006  |   1 007  |   2 007  |   1 007  |   2 求めたい出力結果↓ ----------------------------- E_Code | 1の個数 | 2の個数 001  | 2    | 002  | 3    | 003  | 1    | 004  |      |1 005  | 2    | 006  | 1    | 007  | 1    |2

  • SQL文の実行速度の確認方法

    Oracle SQL*Plusにて、SQL文の開始から値取得までの実行速度の確認をしたいと考えております。 秒単位だけでもOKですので、どなたか確認方法について教えて頂きたくお願いします。

  • VBScriptでSQLファイルの実行

    WSHShell.Runにて、SQL*Plus経由でXXX.sql(内部でストアドプロシージャをコールします)を実行し、ログも出力したいのですが、以下のコマンドをRunに指定すると、sqlplusより返ってこなくなってしまいます。 コマンドプロンプトで実行する分には、正常に終了するのですが・・・。 何が悪いのかわかりません。。 sqlplus -s ユーザー/パスワード@ホスト名 @C:\temp\XXX.sql > C:\temp\XXX.log 代替案として、VBSにてOracleのProcedureをコールする方法でも構いません。 わかる方いらっしゃいましたらご教授願います。 ちなみに、コマンド部分をbatファイルにしてそのbatファイルをVBSでコールすることは可能でした。

  • JavaでのSQL文の実行について

    JavaでのSQL文の実行について Class.forName("org.gjt.mm.mysql.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=UTF-8", "id", "pw"); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); sql = new StringBuffer(); sql.append("set @i:=0;select id,@i:=@i+1 as 'num',name,kana from table order by kana"); rs = stmt.executeQuery(sql.toString()); ResultSetMetaData rsmd = null; rsmd = rs.getMetaData(); tbl = new ArrayList<ArrayList>(); //検索結果 取得 if(rs.next()){ ・ ・ ・ ・ といった形でSQL文を実行してるのですが、うまくいきません。 MySQLのバージョンは5.1です。MySQL上でこのSQLを実行するとしっかり結果は取得できたので、Javaプログラムの書き方に問題があると思うのですが、上記のように一度で二つのSQL文を実行することはできないのでしょうか。単一のSQLの実行は正常にできています。ユーザ変数は取得された結果一覧に行番号を付与するために使っています。 2回に分けてこのSQLが実行できるのであれば、その方法でも良いので教えてもらいたいです。 つたない説明で申し訳ないですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • SQLの実行場所について

    現在Oracle9iを、oo4oを使用しVB6.0で運用しています。 そこで、SQLを実行しているのはサーバ側かクライアント側か、とフと気になってしまいました。 クライアントからのSQL文をサーバで実行して結果を出すのか、それともサーバのデータを一時的に持ち出してクライアントで実行するのか。 または、もう少し違った処理が行われているのか・・・どなたか、ぜひご教授下さい。

  • sqlについて

    oracleのsql文の取得制限でrownumがありますがrownumは何順でデータを取得するのでしょうか

  • SQLをバッチで実行

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