2005/10/22

ゆえあって

Trac のバックエンドの DB を SQLite から PostgreSQL に移行してみました。

Windows 2003にPostgreSQLをインストールするのに、まず一苦労。

何の文字コードが正しいんだろう。と。とりあえず、デフォルトの"C"でインストール。


trac-admin で Tracの環境を作る前に、Trac用のデータベースを作成。

Trac の 環境を作るのに成功して、さて、データの移行ということで、まずはSQLiteのデータをダンプ。


ダンプしたら、CREATE TABLE 文 や INSERT文 がたくさん書いてあったので、このままPostgreSQL

で実行すればいいんだ!か~んたん。


と思ったのが、つらいつらいデータ移行の始まりでした。


まず、ダンプしたデータのCREATE TABLE 文は削除。(trac-adminで環境を作ったときに、テーブルも作ってるから、そっちを使うことにした。べつに、trac-adminが作ったテーブルをdropしてもいいと思うけど)

いくつかのテーブルにはTrac の初期値が入っているので、それはdelete。

ここまでは簡単。


さて、INSERT文の文字列は、「’(シングルクォーテーション)」で囲まないといけないんだけど、これがTrac のWiki フォーマットの太字や斜体 のフォーマットと重なるのです。これを全部、「¥(バックスラッシュ)」でエスケープ。文字列中の「¥(バックスラッシュ)」も「\\」とエスケープしなければなりません。


それで、やっとINSERTが完了。


この方法で、INSERTしないといけないのは、wiki と リポジトリ 関係以外 のテーブルで、wiki については、元の環境から trac-admin を使って、dumpして、新しい環境にload し、リポジトリに関しては、trac-admin でresync した方が簡単。


0 件のコメント: