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: