Firebird upgrade 2.1 to 2.5(その2)


執筆:2011/03/07
編集:2011/03/07


Firebird2.5へアップグレード(その2)

どうやら、metadataというものが、2.5からutf8で保存されるようになったようだ。
データ部分は、デフォルトのデータベースの文字セットと同じになっている気がする。

Firebird2.5から
データベース NONE
だとアップグレード時にgbakがリストアで失敗するので
データベース に文字コードを指定して構造を先に作成したあと、
TIBDatabaseを2つ用意して
Tableループでテーブルのコピーをさくっとして正常動作しました。
(手順としては、データフィールド以外は無視+NULLも)
テーブルのリストは、IBDatabase1.GetTableNames(Tables, False);で取得できます
           if (current_field.FieldKind <> fkData)
              or
              (current_field.IsNull)
             then
              Continue;
           // コピー
           destTable.FieldByName(current_field.FieldName).AsVariant := current_field.AsVariant;

Shift_JISから、UTF8へ保存する場合は、破損する場合があるので注意しよう。

将来性を考えて、
専用変換ソフトを作って、ワンプッシュで新しいデータベースにコピーできるようにしました。
(TableとGENをコピー)


ここは、素直に、データベースとアプリケーションとも同じ文字コードで接続したいと思います。

Todo: データ移行ソフトのコピー後の全データ照合。

» 続きを読む