Posterous theme by Cory Watilo

Filed under: movable type

[memo] mysql to sqlite for movable type

私的メモ(for Unix / Linux only)

MySQLによる運用が面倒に感じてきたので、ディレクトリ毎にバックアップができるので運用が楽にできると思い、SQLiteに変更。

何も考えずにSpiderOakにディレクトリ単位で食わせることができてハッピー。

 

1. crate a new Movable Type with sqltie from web ( for example, movable type 4.34.)

SQLiteを使ったMovable Typeを新規で構築する

 

2. dump schema(スキーマだけdump)

$ sqlite db/mt.db .schema > mtos-4.34.schema

 

3. at OLD Movable Type, dump data with phpmyadmin

at Export Option,

SQL compatibility mode: "Traditional".

uncheck all options, check "Data" and "Complete inserts" only.

donwload with filename "mt_backup.sql".

MySQLのquery logを確認してもいいけどやってない

 

4: If the data is garbled, set utf-8-bom before editing

文字化け起こす場合は、いったんUTF-8 BOMを調整が必要

$ nkf --ic=UTF-8 --oc=UTF-8-BOM mt_backup.sql > mt_backup.sql.bomb
$ view mt_backup.sql.bomb
vi) :set nobomb
vi) :wq!
$ mv mt_backup.sql.bomb mt_backup.sql

 

5. Convert "\r\n" and "\n" to "LF: line feed code" with vim or other editor

これは環境によって必要があったり、なかったり?

$ view mt_backup.sql
vi) :%s/\\r\\n/^M/g  - - - (^M = Ctrl-V + Ctrl-M)
vi) :%s/\\n/^M/g

 

6. Delete thease lines

不要なコメントを削除

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
vi) :wq!

 

7: create new sqlite db by combine schema and data

$ sqlite mt.db < mtos-4.34.schema
$ sqlite mt.db < mt_backup.sql

スキーマも含めてMySQLからSQLiteに移行すると大変

 

8. then use new sqlite db

 

))) Memo

移行時に、テンプレートだけ変更したい場合があるので、そのためのメモ

$ sqlite mt.db ".dump mt_template_meta mt_template mt_templatemap" > template.sql
$ sqlite mt.db
sqlite> delete from mt_template;
sqlite> delete from mt_template_meta;
sqlite> delete from mt_templatemap;
sqlite> .read template.sql

こうするとブログ記事はそのままで、テンプレートだけ変更ができる