- 締切済み
実行したSQLファイルの名前をファイルに出力する方法
1つのSQLファイルの中で、複数のSQLファイルの実行するようになっていて、それを1度に実行するようにしているのですが、途中でエラーが発生している状態です。 どのSQLファイルでエラーが出ているか一目で分かるようにしたいのですが、SQLファイルの名前を実行結果と一緒にテキストファイルに出力したりできないでしょうか? sqlplusのspool機能では実行結果のみ出力されますが、複数のSQLファイルを実行した場合にどの段階でエラーが出ているのか分かりづらいのでよい方法があれば教えてほしいです。 よろしくお願いします。(DBはOracle 10gです。)
- H_POARO
- お礼率0% (0/1)
- Oracle
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
SQL*PLUSで、最初のスクリプトファイルを呼び出す前に、 "set echo on"すれば良いと思いますよ。
関連するQ&A
- SQL初心者です。
SQL初心者です。 SQLPlusをコマンドプロンプトで実行していたのですが、定型のSQL文のためバッチファイルにてスケジュール実行したいと考えています。 コマンドプロンプトを開いて実行していたときはspoolした内容に実行sqlも出力されていたのですが、バッチファイルで同じようにspoolすると実行sqlは出力されず結果のみになってしまいます。 実行したsqlも出力させるには特別にsetするものがあったりするのでしょうか? echoのon、offは試しましたが結果は同じでした。 方法をご教示いただけたら助かります。 よろしくお願いします。
- ベストアンサー
- SE・インフラ・Webエンジニア
- PL/SQLでSPOOLさせたいのですが、可能でしょうか?
PL/SQLにてSPOOLにてSELECTの結果を ファイル出力させたいのですが、 (下記のような感じです。) エラーとなってしまいます。 そもそも、PL/SQLにてSPOOLは使用可能なのでしょうか? 例) declare begin spool c:\test_spool.dat select * from dual; spool off end; この例では 「PLS-00103: 記号"C"が見つかりました。」という エラーメッセージがかえってきます。。。 出力ファイルの指定のしかたが悪いのでしょうか? ご教授いただければ幸いです。 DBはOracle9iです。
- ベストアンサー
- Oracle
- SQL*Plus:SPOOLコマンドでのSQL出力
Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。 SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。 何か方法はないでしょうか? よろしくお願いします。
- ベストアンサー
- その他(データベース)
- 複数のsqlファイルを実行するスクリプト
シェルスクリプトで特定のディレクトリ配下にあるsqlファイルを実行したいのですが、 どのようにすればいいのでしょうか? 今まではsqlファイルが決まっていた為、明示的にファイルを指定出来たのですが、ファイル名が固定でなくなった 為、悩んでいます。 以前は以下のような形で行っていました。 ----------------------------------------- #!/bin/sh #sqlplusでDB接続 sqlplus /nolog <<EOF conn USER (パスワード入力) #ユーザ確認 show user #sql実行 @/home/hoge/sql_01 @/home/hoge/sql_02 @/home/hoge/sql_03 commit; exit EOF ---------------------------------- ここでsql実行したいファイルの特定のディレクトリ配下にある全てのsqlファイル にして実行するようにしたいです。 もし、分かる方いれば教えてください。 よろしくお願いします。
- 締切済み
- Linux系OS
- bashで実行したsqlの実行結果の戻り値
bashで実行したsqlの実行結果の戻り値 bashを使用して、DB間の通信の監視を行なおうとしております shellの内容はサーバAでoracleに接続(sqlplus)して、 そこからサーバBへ接続(connect)するだけの記述です。 この時、 MSG=`sqlplus ID/PASSWORD@SID @connect.sql` echo XXX で、@connect.sqlの実行結果を戻り値としてechoさせたいのですが、 この場合、どのように指定すればよいのでしょうか? (上記の状態でshellを実行すると、connect側ではなく、 sqlplusの戻り値が戻ってきてしまいます) ※conenct.sql connect 接続先DBのID/PASSWORD@接続先 exit だけのsqlで、こちらの接続確認は取れております
- ベストアンサー
- その他(プログラミング・開発)
- Sql developer .sqlファイル実行
SQL developerから、.sqlファイルの実行はできないのでしょうか? 家のパソコンに、vurtual Box でwindows上にLinuxをインストールして、そこにOracleを乗っけて勉強しています。 単純に、spcreate.sql を開きたかっただけなのですが、 windows上から、Sqlplusで下記を実行した場合 @?/rdbms/admin/spcreate.sql は、ちゃんとファイルを開くことができます。 しかしwindows上の、SQLdeveloperからは、上記の方にコマンドをうっても、 エラーが発生しました。ファイルが開けません。 とでてきます。 これは、sqldeveloperは、ファイルを開くようなことができない仕様になっているということでしょうか? よろしくお願いいたします。
- ベストアンサー
- Oracle
- シェルでのファイル内に記載されたSQLファイル実行
Webを検索しても方法が出てこなかったため、質問させていただきます。 ファイル内に記載されたSQLファイルをPostgresで実行したいと思っております。 OracleのSqlPlusでは以下のファイルを次のように実行できました。 【コンソール】 SQL> @@C:/path/hogehoge.sql 【ファイルの中身】 @@C:/path/xxx.sql @@C:/path/yyy.sql @@C:/path/zzz.sql ・ ・ ・ 今回、Postgresでもファイル内に記載されたSQLファイルを呼び出して実行するために、コンソールで以下のコマンドを実行したのですが、エラーとなってしまいます。 psql -e DB名 ユーザ名 < C:/path/hogehoge.sql 他のオプション指定が必要なのか、またはファイル内のSQLファイルのパスの指定方法が間違っているのか…現状では解決方法が見つかっておりません。 どなたか解決方法を知っている方がいらっしゃれば教えていただけませんでしょうか?
- ベストアンサー
- PostgreSQL
- SQLをバッチで実行
掲題の件で少し教えていただきたいことがあります。 バッチファイルでSQLPLUSを起動し、 @XXXXXXXXX.SQL >> XXX.log(バッチのログ)と 実行するのですが、このSQL文がインサート文や アップデート文など通常のSQL文だと バッチでのリダイレクションの結果に XX行作成されました。とかXX行更新されましたとか 出力されると思うのですが、 実行するSQL文の中でさらに、 @XXXXXXXXX.SQL と記述していると どのようにログファイルに出力されますか? XX行作成されました。とかXX行更新されましたとか が出るとうれしいのですが… わかりにくい質問かもしれませんがお願いいたします。
- 締切済み
- Oracle
- プロシージャの戻り値を取得する方法
perlからSQLPLUS->プロシージャを実行してその戻り値を取得。 戻り値が0なら次の処理へ、0以外ならエラー処理へというようなことをやりたいと思っています。 perlの実行コマンドは以下。 $sqlcmd = "sqlplus$DBUSER$PASS\@DB_ALIAS\@$SQLFILE $OUTFILE"; $sql_ret = system("$sqlcmd") >>8; この$sql_retにプロシージャの戻り値が入るようにしたいのです。 プロシージャを実行する$SQLFILEは以下のようなSQLです。 --------------------------------------------------- set serveroutput on WHENEVER SQLERROR EXIT 1 spool &1; DECLARE RetVal NUMBER; BEGIN RetVal := 実行ストアドファンクション; END; / spool off; EXIT SQL.SQLCODE; ---------------------------------------------- エラーが起きたときにファンクションは1を返すようにしているのですが、 それがSQLPLUSの実行結果の戻り値に反映されません。 どうしたらいいのでしょうか? よろしくお願いします。
- 締切済み
- Perl
- [SQL Server] コマンドプロンプトからのCSV形式出力
SQL ServerのテーブルデータをSELECTしてダブルコーテ区切りのCSVに出力したいと考えております。 ・batファイルからの起動を希望。 ・出力CSVファイル名はbatファイルより引数で指定したい。 ・出力後、DELETEも行いたい。 OracleだとSQL*Plus環境で下記のようにテキストレベルで簡単にできます。 SQL Serverでも同様のことができないでしょうか? 要は下記をSQL Server版でやりたいということです。 参考:Oracleだと・・・ 同一dirに、abc.batとabc.sqlを用意しabc.batを実行すると20070601.csvが生成される。 1.abc.bat rem ----abc.bat-ここから---- sqlplus usr/pwd@host @abc.sql 20070601.csv rem ----abc.bat-ここまで---- 2.abc.sql ----ファイル名=abc.sql-ここから--- set echo off set heading off SET VERIFY OFF set FEEDBACK OFF set TRIMSPOOL on set termout off set pagesize 0 set linesize 32767 spool &1 select '"'|| カラム1 ||'",'|| '"'|| カラム2 ||'",'|| '"'|| カラム3 ||'"' from テーブル1; spool off delete from テーブル1; exit ----ファイル名=abc.sql-ここまで--- 20070601.csv結果 -ファイル名=20070601.csv-ここから--- "20060726","scott","356160" "20060727","tiger","463391" "20060728","manager","1930" -ファイル名=20070601.csv-ここまで--- DBサーバ環境 OS:Win2003SvrR2 SQL Serverバージョン:わかりません。(2003にのってるので最近のだと思われます) Oracle経験者でSQLServer初心者です。マニュアルもなく、Web検索しても「SQL」「Server」ってなかなかうまくひっかからない!! ので質問あげさせていただきます。
- 締切済み
- SQL Server