アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

根本的に見直して、SQL*Loaderを使う方が良いんじゃないですかね。


パラメータファイル(5~6行)を書く必要がありますが、コマンド一つでロード可能です。
コミットも1万件ごとに発行可能ですし、インサートに失敗したデータも選別できます。
インサートの処理内容もログに書き出されるので、ログを解析すれば、目的は達成されるハズです。
    • good
    • 0

もう少し、詳しく書かないと分かりませんね。


バッチの実行はコマンドから?(Tera Term や TELNET?)
実行するのは問合せ? プロシージャー?

まあ、PL/SQLなら、DBMS_OUTPUT.PUT_LINE を使うとか
問合せなら、SPOOL でログを取り、最後の何行かを実行後に出力するバッチにするとかですかね。

この回答への補足

ご回答ありがとうございます。
コマンドからです。
現状の仕様はバッチファイルを実行すると、txtファイルよりパラメータを読み込み、INSERT文を作成し、最後に一括して実行するといったものになっています。
SPOOLしているのは、処理開始時刻と処理終了時刻をログファイルに出力するためです。
また、INSERT文1万件ごとにcommit文を挟むようにしています。

rem ログファイルパス
set log_path=LOG.txt

rem 開始時刻をログ出力
echo [開始時刻] >> %log_path%
echo %time% >> %log_path%

rem datファイル名
set dat_name=dat_1.dat

rem READファイルパス
set cmt_path=test.csv

rem INSERT処理件数カウンタ
set count=0

rem sql文の頭
echo set feedback off; > %dat_name%
echo set verify off; >> %dat_name%
echo spool %log_path% append; >> %dat_name%

rem READファイルより一行づつデータを読み込みます。
For /F "tokens=* delims=" %%i in (%cmt_path%) Do Call :Sub %%i

rem sql文のおしり
echo spool off; >> %dat_name%
echo commit; >> %dat_name%
echo exit >> %dat_name%
sqlplus -s */*@* < %dat_name%

rem 完了時刻をログ出力
echo [完了時刻] >> %log_path%
echo %time% >> %log_path%

rem 処理件数をログ出力
echo [処理件数] >> %log_path%
echo %count% >> %log_path%

echo.
echo 処理を終了しました。
echo.
notepad %log_path%
pause >nul

goto :eof

:Sub

set DATA=%1
set word1=%DATA:~0,4%
set word2=%DATA:~4,8%
set word3=%DATA:~12,1%
set word4=%DATA:~13,25%


echo INSERT INTO *_DATA (t1,t2,t3,t4) VALUES(LPAD('%word1%',6,0),LPAD('%word2%',15,0),LPAD('%word3%',6,0),'%word4%'); >> %dat_name%


rem datファイルに書き込んだINSERT文の数をカウントします。
set /a count=count+1

rem 一万件ごとにCOMMITを行うようにします。
set /a result=count%%10000
if %result%==0 goto label1
:else
goto end
:label1
echo commit; >> %dat_name%
echo spool off; >> %dat_name%
echo exit; >> %dat_name%
sqlplus -s */*@* < %dat_name%
set dat_name=dat_%count%.dat
echo set feedback off; > %dat_name%
echo set verify off; >> %dat_name%
echo spool %log_path% append; >> %dat_name%
:end

goto :eof

補足日時:2007/12/25 13:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A