たいしたネタじゃないけど、ときどき必要になる割にいつも調べてる気がするのでメモしておく。
SQLite3 のデータベースは1つのファイルになってる。このデータベースの中身を SQL にダンプするには sqlite3
コマンドをつかって、次の2通りのやり方がある。
対話的インターフェイスでダンプする方法
データベースを開くと、コマンド入力待ち状態になる。
takatoh@wplj:db$ sqlite3 production.sqlite3 SQLite version 3.11.0 2016-02-15 17:29:24 Enter ".help" for usage hints. sqlite>
ここで .dump
コマンドでダンプすることができるけど、このままだと画面に出力されてしまうので、先に .output
コマンドで出力先をファイルに変更しておく。
sqlite> .output ./dump.sql
これでカレントディレクトリの dump.sql ファイルに出力されるようになる。そしたら .dump
コマンド。
sqlite> .dump
引数なしだとデータベース内のすべてのテーブルをダンプする。特定のテーブルだけをダンプするには、そのテーブル名を引数に与えればいい。
終わったら .exit
。
sqlite> .exit
コマンドラインから直接ダンプする方法
パイプを使って sqlite3
コマンドにダンプを指示する .dump
コマンドを流し込んでやればいい。デフォルトでは標準出力に書き出すので、ファイルにリダイレクトする。
takatoh@wplj:db$ echo '.dump' | sqlite3 production.sqlite3 > dump2.sql
定期的にバックアップするような場合にはこっちのほうが便利。