SQLite | SQLiteコマンド | ダンプからデータベースを再構築する(.readコマンド)

.dumpコマンドはデータベースのスキーマとデータをSQL文として保存します。.readコマンドでそのダンプファイルを実行すると、同じ内容のデータベースを作成できます。

ダンプの作成方法はデータベースのダンプ(.dumpコマンド)を参照してください。

ダンプファイルを読み込む

新しいデータベースにダンプを読み込むには.readを使います。

.read FILENAME

読み込むファイル名を指定します。ファイルには、.dumpの出力のようなSQL文が必要です。SQLiteはファイルを読み込むとSQL文を順番に実行します。

次のdump.txtには既存データベースのダンプが保存されています。

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE user (name text, old integer, address text);
INSERT INTO user VALUES('devkuma',28,'Seoul');
INSERT INTO user VALUES('kimkc',22,'Busan');
INSERT INTO user VALUES('araikuma',32,'Seoul');
INSERT INTO user VALUES('happykuma',23,'Seoul');
INSERT INTO user VALUES('mykuma',23,'Daejeon');
CREATE TABLE color (id integer, name text);
INSERT INTO color VALUES(1,'Red');
INSERT INTO color VALUES(2,'Blue');
INSERT INTO color VALUES(3,'White');
CREATE INDEX nameindex on user (name);
COMMIT;

空の新しいデータベースnewdb.sqlite3を作成します。

sqlite3 newdb.sqlite3
$ sqlite3 newdb.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> 

.readでファイルを読み込みます。

.read ./dump.txt
sqlite> .read ./dump.txt
sqlite> 

ファイル内のSQL文が順番に実行され、2つのテーブルとそのデータが作成されます。

.tablesでテーブルを確認します。

.tables
sqlite> .tables
color  user 
sqlite> 

各テーブルを照会し、データを確認します。

select * from user;
sqlite> select * from user;
devkuma|28|Seoul
kimkc|22|Busan
araikuma|32|Seoul
happykuma|23|Seoul
mykuma|23|Daejeon
sqlite> 
select * from color;
sqlite> select * from color;
1|Red
2|Blue
3|White
sqlite> 

データベースのダンプを新しいデータベースに読み込むと、スキーマとデータを再構築できます。