自分で言うのも何であるが、データ移行にはちょっとした自信がある。過去、神業とも言える移行を2回成功させている。コンピュータネタ、目次へ
データベースをディスク間で移行するもので、単純といえば単純なのであるが、とにかくデータ量か多い。ひとつは、ディスクのメーカーもデータベースソフトのメーカーも移行日前日に投げ出したというものだ。にもかかわらず130近いテーブルを、たった一人で、唯の一度もI/O競合を起こさずに、かつデータベース定義の最適値をその場で計算しながら行ったという(3つほど最適値から外れた)のは、まあ神業であろう。少なくともハードメーカーとソフトメーカーはそう認めてくれるはずだ。
もうひとつはどう考えても朝から始めて翌朝2時までかかるはずの移行作業を、当日のお昼過ぎに終わらせたという裏技使いまくりの移行である。なぜ終わったか、未だにだれ一人分からないに違いない。いやDFDSSを使い倒しただけなんですがね。(つまりプラットフォームはIBMの大型コンピュータ、OSはMVSです。)
なんでこんな過去の自慢話をしたかというと、情報処理試験に落ちてしまってショックだからである。(論文のテーマが移行作業であれば、楽々だったろうなあ。)さて、これがパソコンレベルのデータ移行となると多少毛色が違ってくるもののようだ。移行用ツールも作ったことはあるが、全く別のところに問題はあるらしい。ユーザーサイドでプログラム開発をやっている人間が「プログラムを変えたのでデータの移行をしなければならない」と聞いたときにはその真意が理解できなかった。
プログラムが変わって、データフォーマットも変えなければならないのであれば、tab区切りファイルかなんかで吸い上げてawkでちょちょっとやって再ロードすればいいじゃないか、何を悩むことがあるんだ?と思ったが、簡単なことではないらしい。要するに、マクロというかVBAというか、データとプログラムが一つのファイルになっているからその一部だけを変えなければならないのが大変なんだそうだ。特に大変なのがMS-ACCESS。一つのファイルの中に、テーブルがいくつもあって、クエリーがあって、フォームがあって、マクロがあってモジュールがあって・・・。そんなのMS-ACCESS使っているんだから仕方がないじゃないかあ、なんでParadox使わないのよ!と言っても、そうなっているのだから仕方がないらしい。
そんなわけで、マクロ(プログラム)が変わったから、そのファイルの中にデータの方を持ってきたい、というニーズが生ずるらしい。テーブルレイアウトも変わったし、変更後のテーブルにマクロがしがみついているから、それだけ外して、データのある元々のファイルに持ってはいけない。そういうことらしい。
もちろん、そのデータファイル(というかMS-ACCESSのごっちゃりしたファイル)は日常業務に使っているから、移行手順はこのようになるだろう。プログラムの性格(例えばReadOnly)によっては、もう少し簡単になるだろうが。(^^;
- 移行先ファイルのバックアップをとる。
- 移行先ファイルのデータを空にする。
- 業務終了を待つ。
- 元ファイルのバックアップをとる。(移行失敗に備える)
- 元ファイルから、テーブルの中身(何テーブルあろうと、全部)をエクスポートする。
- エクスポートファイルを加工する。(必要な場合)
- テーブルの中身を移行先ファイルにインポートする。
- ファイルを実際に使うディレクトリにコピーする。
- ファイルのバックアップをとる。(戻し作業のためです)
- 実動作確認を行う。(実データとプログラムに齟齬がないかどうか)
- バックアップを戻す。(実動作確認でデータが汚れるから)
しかも恐ろしいことにこれをGUIで行わなければならない。自動処理は無理でしょう。それとも自動処理マクロを、同じファイルに入れておきますか、テストが大変ですよ。
ちなみにMS-ACCESSのほうが大変に見えますが、MS-EXCELもなかなかのものです。使っている人が、勝手にマクロを書き換えたり、作り込んだりしている確率はグンと高くなりますから。そんなわけで、プログラムとデータは極力別ファイルにしましょう。どうしてもということであれば、テーブルを直接読み書きするのではなく、クエリーを読み書きするようにしましょう。と、こんなことまで徹底しなければならなくなる。
ただし、落とし穴は至る所にあります。先日351個のMS-ExcelファイルをOLEで開いて/読んで/閉じてという移行ツールを作ったところ、100ファイルを過ぎたところで止まってしまいました。Windows95ではそんなものでした。試しにWindowsNT4.0でやると最後までたどり着きました。
Windows95しかなければ、自分以外には使わせられないプログラムになったことでしょう。最初に選んだ道具によっては、どうしようもなくなることも多い。なお、冒頭の神業的移行終了後、ハードメーカーの人がノコノコとやってきた。
「最適値ってどうやって求めましたか?」
「なんで聞く?(こっちが聞いたとき、知らないといって問題視しなかったんだろ)」
「いえ、参考にと思いまして」
「そんなの、小さなテーブル作って実験してみればすぐ分かる。それを答えられなかったということは、あんたたち実際にテストしたの?ということになるよ。」
「そういうもんだいですか?」
「そういう問題です。」
(おかげで動作確認の手間がよけいにかかったんじゃないか!)