ダンプの結果を記載したファイルをインポート

広告

「.dump」コマンドを使えばデータベースに含まれるテーブルなどの構造やデータをSQL文の形式で保存することができますが、「.read」コマンドを使うことでダンプした内容が保存されたファイルをインポートして同じ内容のデータベースを作成することができます。ここでは「.read」コマンドを使ったダンプファイルインポート方法について解説します。

「.read」コマンドを使用する場合の書式は次のとおりです。

.read FILENAME

引数にはインポートするファイル名を指定して下さい。指定するファイルはダンプ結果が保存されたファイルのようにSQL文が記述されたものを指定して下さい。ファイルが読み込まれるとファイルに記載されたSQL文を順番に実行していきます。

では実際に試してみます。既存のデータベースの内容をダンプした内容が記載されている次のようなファイルを用意しました。ファイル名は「dump.txt」です。

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE staff(id integer, name text, address text);
INSERT INTO "staff" VALUES(1,'Yoshda','Tokyo');
INSERT INTO "staff" VALUES(2,'Hori','Sapporo');
INSERT INTO "staff" VALUES(3,'Suzuki','');
INSERT INTO "staff" VALUES(4,'Uchida','Nagoya');
CREATE TABLE product(id integer, name text, price integer);
INSERT INTO "product" VALUES(1,'Mobile',8000);
INSERT INTO "product" VALUES(2,'PC',32000);
INSERT INTO "product" VALUES(3,'Printer',5000);
CREATE INDEX staffindex on staff(id);
COMMIT;

次にインポートを行う新しいデータベースを作成します。新しいデータベースですのでテーブルなどはまだありません。

p5-1

それでは「.read」コマンドを使ってファイルからインポートを行います。

.read ./dump.txt

p5-2

インポートされるとファイルに書かれていたSQL文が順に実行されていきます。今回の場合にはテーブルが2つ作成され、インデックスも1つ作成されます。そして2つのテーブルにはいくつかのデータが格納されます。

まずテーブルとインデックスが作成されたかどうかを確認します。テーブルが2つとインデックスが1つ作成されています。

.tables
.indices

p5-3

次にテーブルにデータが格納されているかどうかを確認します。どちらのテーブルにもインポートしたファイルに記述されていた通りにデータが格納されています。

select * from product;
select * from staff;

p5-4

このようにインポートを利用するとSQL文が記載されたファイルを読み込んで実行させることが可能です。

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )