Oracle活用 バッチで定期的に処理
毎月最初の月曜日は千疋屋の食べ放題の予約があるんだけど、
なんと!1年ぶりに予約が取れました~~~!
やったぁ!!
……と思ったら、4000円だったのに、6000円に値上げ?!
1.5倍の値上げとはちょっと強気過ぎない?
うう~ん、迷うなぁ。
例えば、毎日の売上なんかを定期的に取得したいなんてときの方法を。
特定のフォルダに[任意の名前].sqlというファイルを作成します。
todays_sales.sql
set colsep ',' set trimspool on column log_date new_value log_date_text noprint select to_char(sysdate,'yyyymmddhh24miss') log_date from dual; spool sales_&log_date_text._list.csv select * from employees where department_id = '30' / spool off exit
中身はこんな感じ。売上じゃないけど…。
ポイントは、この3行。
これでファイル名に日付時刻が入るので、毎日実行してもファイル名が重複しない!
※1日1回ならyyyymmddだけでもいいかも。
column log_date new_value log_date_text noprint select to_char(sysdate,'yyyymmddhh24miss') log_date from dual; spool sales_&log_date_text._list.csv
コマンドプロンプトを立ち上げて、こんな感じで実行。
C:\Users\SAKURI\sql>sqlplus hr/hr@XE @C:\Users\SAKURI\sql\todays_sales.sql
ファイルができました!
中身もこんな感じ。
本当に中身だけを出力したくて、「6行が選択されました。」を出したくない場合は、
set feedback off | 「~行が選択されました」を非表示にする |
これを追加で設定しておけばOK!!
これでWindowsならタスクバーにでも設定しておけば定期的にデータやログの取得が簡単にできちゃう。