SQLite資料一覧

バックアップ/リストアの方法

2008/4/10更新

対応バージョン: 3.5.7

バックアップ

バックアップは管理コマンド.dumpを使用する。

.dumpによって出力される内容はシンプルで、CREATE文やINSERT文といったDBを再構築するためのSQL文の羅列である。

mysql> .dump [<テーブル>]

引数にテーブル名を指定すればそのテーブルに関するSQLが出力され、テーブル名を省略すれば全てのテーブルに関するSQLが出力される。

例) 2つのテーブルが存在し、最初のテーブルには3レコードが存在し、2つ目のテーブルにはデータが存在しない場合

sqlite> .tables
customer  purpose 

sqlite> select * from customer;
1|foo|01-234-5789|park
2|bar|99-999-9999|apart
3|baz||

sqlite> select * from purpose;
(データなし)

sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE customer(
id integer,
name text,
tel text,
address text);
INSERT INTO "customer" VALUES(1,'foo','01-234-5789','park');
INSERT INTO "customer" VALUES(2,'bar','99-999-9999','apart');
INSERT INTO "customer" VALUES(3,'baz',NULL,NULL);
CREATE TABLE purpose(
 id integer,
 desc text);
COMMIT;

sqlite> .output test.dump ← 出力先としてファイルを指定

sqlite> .dump ← 上記ファイルに出力

また、以下のようにすればコマンドラインから簡単にバックアップファイルが作成できる。

% echo ".dump" | sqlite3 test.db | gzip -c > test.dump.gz

リストア

リストアはいったん全てのデータを削除(つまりDBファイル削除)した後にバックアップファイルを読み込ませるだけでよい。

例)

% rm test.db

% sqlite3 test.db < test.dump

バックアップファイルは単純なSQL文の羅列なので、必要に応じてリストアするテーブルを減らしたり挿入するデータに修正を加えることも可能である。