[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
こうするとブログ記事はそのままで、テンプレートだけ変更ができる