WiLiKi:データベースのコード変換

WiLiKi:データベースのコード変換

Shiro (2005/11/11 02:26:49 PST): euc-jpだけでは済まない仕事が色々出てきたので、 こちらのサイトもぼちぼちutf-8 Gaucheに移行しようと考えているが、 WiLiKiは内部エンコーディングでデータベースにページデータを書き出しているので Gaucheを入れ換えただけではまずい。そこで移行ツールを書いてみた。 一応動いてるみたいだが、もしかすると不具合があるかもしれない。御注意。 (なおこのWiLiKi自体はまだutf-8に移行してない。そのうちね。)

なお、gdbmは変更を繰り返すうちにだんだんdbmファイルのサイズが増えるという 特性がある。このツールでコピーするとごみ領域が削られるので コンパクテーションにも使える。

ソース

http://gauche.cvs.sourceforge.net/gauche/Gauche-scripts/wiliki-copydb?only_with_tag=HEAD&view=markup

使いかた

wiliki-copydb [-s type][-d type] srcdbm srclog dstdbm dstlog

WiLiKiのdbmデータベースsrcdbとログファイルsrclogをそれぞれ dstdbmdstlogで指定される名前のデータベース、ログファイルへと コピーする。

-s、-dオプションはそれぞれソースとコピー先のdbmタイプおよび文字エンコーディングを dbmtype.encodingという形式で指定。dbmtypeとencodingは独立して 省略できる (dbmtypeを省略する場合はencodingの前のピリオドが必要)。 dbmtypeのデフォルトはgdbm、encodingのデフォルトはGaucheの内部エンコーディング。

wiliki-copydb [-s type][-d type] srcdbm dstdbm

ログファイルを使っていない場合やコピーが不要な場合(dbmファイルの コンパクテーションに使う場合)はこちらの形式でも良い。

コード変換

wiliki-copydb -s .euc-jp -d .utf-8 old.dbm old.log new.dbm new.log

dbmタイプ変換

wiliki-copydb -s fsdbm -d gdbm old.dbm new.dbm

gdbmコンパクテーション

wiliki-copydb old.dbm new.dbm

バグ報告、コメント、その他

Setu? ありがとうございます。近々、使っているサーバの移行があり、新しいサーバは Debian sarge で、gaucheの内部コードが utf-8 でビルドされてます。それで、ソースから入れ直すか、コードを utf-8 に切替えるか迷ってました。問題はデータベースのコード変換をしなくちゃならないことだけのようだったので、探すか作るかしようと思っていました。今みつけて嬉しかったです。 -- 2005/11/11 06:24:29 PST

More ...