世の中はお休みだが俺は仕事。 休日などの人がシステムを使ってないときじゃないとできない作業なので、休日出勤はしょうがないのだが、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
ファイルの数にも名前にも依存しない。
これまで、大した数じゃないからいいかと思いながらも、ちょっとモヤモヤした気分でコピペしていたのだが、一度作ってしまえばもうそんな思いはしなくて良いのだな。 って、まあ、今更なんだけどさ。
連休が明けたら、忘れないうちに雛形を更新しておこう。
仕事から帰るバスの中、窓から射す日の光が腕時計で反射していたのだが、反射でできる模様が腕時計の見た目からは全く想像できないものだった。
ちょっと夏っぽくなってきた雲。
弱草藤(ナヨクサフジ)
ヨーロッパから飼料として持ち込まれたものが広がったのだそうだ。 記憶があやふやだけど、浅川の河原に群生し始めたのはここ数年のことじゃないかな。