fc2ブログ

(元)社内SEの徒然なる日記

COBOLからJavaに書き換えたらCOBOLの偉大さを感じた今日この頃(前編)

■ ORA-08103の対応

妙なOracleエラーが発生するのでプログラムを書き換えたという記事を書きました(OracleのSELECT文でORA-08103発生!(結局PG書き換えた・・・))。

元々の処理はCOBOLで作成されており、Oracle(基幹DB)からデータ抽出しCSVファイルを出力するプログラムと、CSVファイルを読み込んでOracle(DWH)に登録&更新を行うプログラムの2本が存在していました。

Oracleのスキーマーが異なるので、上記のような手段を取っていたようですが(元々の処理を作ったのは私ではない)、別に無理にプログラムを分ける必要はない気がします。

そこで、基幹DBとDWHの間にデータベースリンクを設定した上で、プログラムを作り替えることにしました。

COBOLのままでも良かったのですが、このご時世に新規に作成するのにCOBOLも無いだろうってことで、Javaで作成することにしました。

■ COBOL→Java

COBOLで行っていたDWHの更新処理は、CSVを1行読み込んで、更新先のテーブルをPK検索。データが抽出出来たらUPDATE、抽出出来なかったらINSERTという昔ながらの方法です。

このロジックに思うところはあったのですが、立ち位置がJavaへの移植だったということもあって、そのまま同じロジックをJavaで作り直しました。

つまり、こんな感じです。

①基幹DBから対象データ抽出
② ①の抽出結果をメモリに蓄積
③ メモリに蓄積した1行を読込
④ ③でDWHの対象テーブルをPK検索
⑤ ④の抽出結果の有無で、UPDATE か INSERT

んで、③〜⑤までデータが無くなりまで繰り返します。

■ 後書き

ロジック自体は変えていなくても、間にCSVファイルを経由しなくて良くなったので、以前の記事(OracleのSELECT文でORA-08103発生!(結局PG書き換えた・・・))で書いた妙な変換を行うSELECT文とかはスッキリさせました。

移送項目は多いのでテストは手間でしたが、技術的に難しいことをする訳でもないので、テスト段階では問題は出ませんでした。

ただ、これを本番環境で実行すると、まぁ、色々と出た訳です。

ってことで、後編に続きます。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---
スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する