SQLiteデータベースをdumpレベルでバックアップ

SQLiteのデータベースは1つのファイルから作られたデータベースな為ファイルレベルのコピーを取れば簡単にバックアップや他のホストへの移行が可能です。 ただデータベースをSQLiteから他のMySQL等に変更するときにはこのファイルコピーのワザは利用できません。この場合SQLiteデータベースのdumpデータを取得して他のデータベースに移すしか方法はなさそうです。

SQLiteデータベースを用意する

※ここではdumpデータの元になるデータを用意しています。既にデータベースがある場合は必要ありません。

articles.sql

BEGIN TRANSACTION;
DROP TABLE IF EXISTS articles;
CREATE TABLE articles(id integer primary key,name text,time text);
INSERT INTO "articles" VALUES(1,'bar','13:10');
INSERT INTO "articles" VALUES(2,'foo','15:55');
COMMIT;

データベースを作成

$ cat articles.sql | sqlite3 articles.sqlite

SQLiteのdumpデータを取得する

$ echo '.dump' | sqlite3 articles.sqlite | gzip -c > articles.dump.Z

ここではarticles.sqliteのsqlite3データベースのdumpデータをgzip圧縮して取得しています。

SQLiteデータベースのRestore

先程取得したdumpファイル articles.dump.Z から新規データベース(articles_new.sqlite )を作成します。

$ zcat articles.dump.Z | sqlite3 articles_new.sqlite

SQLiteで使える便利なコマンド

データベースに作成されたテーブル名を表示

sqlite> .table
articles

作成されているテーブル構造

sqlite> .schema
CREATE TABLE articles(id integer primary key,name text,time text);

データベースのdump出力

sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE articles(id integer primary key,name text,time text);
INSERT INTO "articles" VALUES(1,'bar','13:10');
INSERT INTO "articles" VALUES(2,'foo','15:55');
COMMIT;
created:

Back to top