SQLite のデータのバックアップと復元
#18 データのバックアップ・復元
http://dotinstall.com/lessons/basic_sqlite/6418
を参考に
テーブル構造、データを外部ファイルに出力し
それを取り込む方法を学習
今回使用するのは
.dump
これはDBの内容をSQL文で出力する
バックアップを取るのに便利
テーブルだけバックアップするなら
.dump テーブル名
すべてのテーブルをバックアップするなら
テーブル名を指定せず
.dump
とすればOK
これらを直接ファイルに出力するには
出力先を変更する
出力先の設定確認は
.show
で行える
現在の設定は
echo: off
explain: off
headers: on
mode: list
nullvalue: “”
output: stdout
separator: “,”
stats: off
width:
で
出力先の設定部分は
output: stdout
になり、意味は画面表示
これを変更することで
ファイルに出力できるようになる
変更は
.output 出力するファイル名
今回は
.output data.dump
として
.dump data
と実行すると
data テーブルの中身が
SQL文でファイルに記述される
data.dump ファイルの中身を
cat data.dump で確認すると
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE data(name,score,team_text);
INSERT INTO “data” VALUES(‘hebereke’,1000,’A’);
INSERT INTO “data” VALUES(‘hiroshi’,400,’C’);
INSERT INTO “data” VALUES(‘tomonaga’,400,’B’);
COMMIT;
となっているのが確認できる
ちなみに、
.output の出力先を ファイルにした場合
.show などの結果もファイルに出力されてしまう
この変更は、一度
.exit で sqlite を抜けるか
もしくは
.output stdout
とすれば、元に戻る
ちなみに、ファイルに出力されたSQL文は
vim などで編集することが可能
変更後、再度読み込みしたいときには
.read
を使う
今回なら
.read data.dump
でOK
ただし、元のデータがあると、すでに存在していますという
エラーがでてしまうので、一度
drop table data;
.read data.dump
で読み込みする
SQL文にする使い道で一番大きいのは
カラムの編集
SQLite にはカラムを削除できないので
.dump で一度出力して
vim などでSQL文を修正し
失敗したテーブルを
drop table テーブル名
で削除
そして、テーブル作成のSQLを修正した dump ファイルを
.read で読み込んで修正というやりかたが使える