2016 05 04

sql loaderの連続実行

世の中はお休みだが俺は仕事。 休日などの人がシステムを使ってないときじゃないとできない作業なので、休日出勤はしょうがないのだが、1時間程度の作業のために休みの日にわざわざ出てくるってのが、ねえ。

今日の作業とは何の関係もないのだが、sql loader の連続実行について。

これまでに何度か、複数のデータファイルをデータベースに取り込みたい場合があったのだが、ファイルの数が少ないこともあって、ファイルの数分だけ取り込み処理を書いていた。 より正確に言うと、過去に作ったバッチファイルをちょっと書き直して使い回してた。

例えばこんな感じ。

set DB_CONN=SCOTT/TIGER@ORCL set CTL_DIR=C:¥work¥ctls set ERR_LST=err.log pushd %CTL_DIR% del %ERR_LST% sqlldr %DB_CONN% control=data_1.ctl if not %errorlevel% == 0 echo data_1.ctl >> %ERR_LST% sqlldr %DB_CONN% control=data_2.ctl if not %errorlevel% == 0 echo data_2.ctl >> %ERR_LST% sqlldr %DB_CONN% control=data_3.ctl if not %errorlevel% == 0 echo data_3.ctl >> %ERR_LST% popd

コントロールファイルは全てコントロールファイル用のフォルダーにあるのが前提。 実行した結果に何か問題があった場合は、そのコントロールファイル名をエラーリストに追加するようにしている。 何も問題がなければ、エラーリストも作らない。

こんなのを雛形に、扱うファイルの数に合わせてコピペしてファイル名を変えていた。

でもこれ、この前提条件なら、ファイル名を一々書かなくても済むんだよな。

例えばこんな感じ。

set DB_CONN=SCOTT/TIGER@ORCL set CTL_DIR=C:¥work¥ctls set ERR_LST=err.log setlocal EnableDelayedExpansion pushd %CTL_DIR% del %ERR_LST% for %%i in (*.ctl) do ( sqlldr %DB_CONN% control=%%i if not !errorlevel! == 0 echo %%i >> %ERR_FILES% ) popd

ファイルの数にも名前にも依存しない。

これまで、大した数じゃないからいいかと思いながらも、ちょっとモヤモヤした気分でコピペしていたのだが、一度作ってしまえばもうそんな思いはしなくて良いのだな。 って、まあ、今更なんだけどさ。

連休が明けたら、忘れないうちに雛形を更新しておこう。

時計

仕事から帰るバスの中、窓から射す日の光が腕時計で反射していたのだが、反射でできる模様が腕時計の見た目からは全く想像できないものだった。

雲

ちょっと夏っぽくなってきた雲。

弱草藤

弱草藤(ナヨクサフジ)

ヨーロッパから飼料として持ち込まれたものが広がったのだそうだ。 記憶があやふやだけど、浅川の河原に群生し始めたのはここ数年のことじゃないかな。