なんとなく PostgreSQL にしたくなった。
Schema::Pg を作る必要があるか? と思ったのだけど、SQLite のそのまんまでいける。
ただ entry.date が timestamp 型でないのが少々気持ち悪くはあるが。
$ createdb -E UTF_8 plagger $ echo .schema | sqlite3 plagger.db | psql plagger
以下のSQLを実行。id のカラムを auto increment に。
CREATE SEQUENCE entry_id_seq; ALTER TABLE entry ALTER id SET DEFAULT nextval('entry_id_seq'); CREATE SEQUENCE entry_meta_id_seq; ALTER TABLE entry_meta ALTER id SET DEFAULT nextval('entry_meta_id_seq'); CREATE SEQUENCE entry_tag_id_seq; ALTER TABLE entry_tag ALTER id SET DEFAULT nextval('entry_tag_id_seq'); CREATE SEQUENCE feed_id_seq; ALTER TABLE feed ALTER id SET DEFAULT nextval('feed_id_seq'); CREATE SEQUENCE feed_meta_id_seq; ALTER TABLE feed_meta ALTER id SET DEFAULT nextval('feed_meta_id_seq'); CREATE SEQUENCE feed_tag_id_seq; ALTER TABLE feed_tag ALTER id SET DEFAULT nextval('feed_tag_id_seq');
config.yaml で接続先設定。
- module: Store::DBIC config: schema_class: Plagger::Schema::SQLite connect_info: [ 'dbi:Pg:dbname=plagger', 'fujiwara', '', ]
できた。
.dump でデータの中身も全部移行できるかと思ったのだが、
- date に INTEGER じゃない値が入っている entry があった (SQLiteは型チェックしないからエラーにならない)
- body で ' のエスケープがらみで import 時にエラーになる entry が
ということで、スキーマだけ。