2012-04-26 sqlite
db の内容を dump するには以下。dump.sql にSQLが出力される。
$ sqlite3 db sqlite> .output dump.sql sqlite> .dump sqlite> .exit
dump.sql を db_new に import するには以下。
$ sqlite3 db_new sqlite> .read dump.sql
auto_vacuum は「PRAGMA auto_vacuum = 1」を実行すればできるはずなんだけど、いくらやっても設定できない。
$ sqlite3 db sqlite> PRAGMA auto_vacuum = 1; sqlite> PRAGMA auto_vacuum; 0 ←0のまま...
で、auto_vacuum のドキュメントをちゃんと読んでみると、
Therefore, auto-vacuuming must be turned on before any tables are created. It is not possible to enable or disable auto-vacuum after a table has been created.
なるほど、テーブル作る前に実行しろと... ということで、CREATE TABLE 実行するまえに PRAGMA auto_vacuum = 1 したら設定できた。
$ sqlite3 db_new sqlite> PRAGMA auto_vacuum = 1; sqlite> PRAGMA auto_vacuum; 1
ちなみに、auto_vacuum が 1 or 2 の場合は、
sqlite> VACUUM; PRAGMA auto_vacuum=0;
みたいにすれば auto_vacuum を 0 に戻せる。逆はできない。