2005年1月28日(金)

oracle 完結編

oracle に食わせる用のsql ファイルを sed と awk を駆使して作る俺。

一番手こずったのは Mac の、改行が ^M でぐだぐだといっぱい書いてあるファイル。 find で拾いながら sed でざざざと前処理して CSV なファイルにして、ここからは大した事なかろうとタカをくくっていたら、ディレクトリ名埋めればカンマやアンパサンドがまざっているし、そんなのが混ざっているんで素直に sed に渡せないし、よくよく調べるとカラム数が可変長だし……。そんなんで、 find で呼ぶ用の、かなり長大なコマンドぶら下げた sed を叩く sh script ができた。結局 ^M をあえて最後まで残してカラム区切りにして、最後の awk で FS="\^M" で刻むことに。

こうしてできたファイルをさらに sed で前処理して、 awk で刻む。カラム数が可変だから、何箇所かに区切りのマーカー入れておいて、1カラムづつ手探りで進んで変数に埋めて、 insert into 文に書き出す。

カラム数のバリエーションが何種類あるのかも不明で、スクリプト回しては全部見ていって、つじつまあってないのを見ては元データを確認して修正。それにあわせてテーブルのほうも修正。いやー体力勝負だった。ついでに、俺としてもずいぶんと大作のスクリプトを書いた。当分こういう作業はいいや。

[referer: [an error occurred while processing this directive]]

あわせて読みたい