SQLiteファイルのバージョンを変換する。
SQLite便利です。よく使います。 Tracのバックエンドでも使うし、Djangoベースのちょっとしたウェブアプリのバックエンドでも使います。 そういやAjax住所検索なんて物をだいぶ前に作りました。PHPだけど。
各種Linuxディストリビューションなどでは、バージョン2系とバージョン3系の2種類が混在して使用されています。 困るのは、これらバージョンでファイル構造が全く違うこと。 このTracのバックエンドでも、これまでバージョン2系を使っていました。 ↓訳あってバージョン3に変更したかったので、ファイル変換ツールを作りました。
作りましたってほどの事はありません。 SQLiteのコマンドラインツール(シェル)でダンプして、喰わせるだけです。
#!/bin/sh if [ "$#" = 0 ]; then echo "Usage: $0 sqlite2-db-file..." 1>&2 exit 1 fi for fname in $*; do echo "Processing: $fname" 1>&2 old="$fname"2 mv "$fname" "$old" sqlite "$old" .dump | sqlite3 "$fname" eval "`stat --format='chmod %a \"$fname\"; chown %u:%g \"$fname\"' \"$old\"`" done
訳あって
上記「訳あって」というのは、Tracの実装が「pysqlite2が入っているとpysqlite 1.0よりも優先する」というふうになっているからです。pysqlite2を入れたらいきなりTracが動かなくなって焦りました。どっちを使うか設定できればいいのになあ。
(2006/11/23 sgk)
