ダンプをインポートしてデータベースを再構築する(.readコマンド)

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

なお .dump コマンドを使ってデータベースをダンプるする方法については「データベースをダンプする(.dumpコマンド)」を参照されてください。

(Last modified: )

ダンプしたファイルをインポートする

ダンプしたファイルを新しいデータベースからインポートするには .read コマンドを使います。書式は次のとおりです。

.read FILENAME

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

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

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE user(name text, gender text, address text);
INSERT INTO user VALUES('Honda','man','Tokyo');
INSERT INTO user VALUES('Ooshima','woman','Osaka');
INSERT INTO user VALUES('Shima','woman','Tokyo');
INSERT INTO user VALUES('Yamada','man','Nagoya');
INSERT INTO user VALUES('Fukushi','man','Fukuoka');
INSERT INTO user VALUES('Eda','woman','Osaka');
INSERT INTO user VALUES('Kiuchi','man','Tokyo');
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');
COMMIT;

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

sqlite3 newdb.sqlite3

ダンプしたファイルをインポートする(1)

それでは .read コマンドを使ってファイルをインポートします。

.read ./dump.txt

ダンプしたファイルをインポートする(2)

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

テーブルが作成されたかどうかを確認してみると、2つテーブルが作成されていることがわかります。

.tables

ダンプしたファイルをインポートする(3)

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

select * from user;

ダンプしたファイルをインポートする(4)

select * from color;

ダンプしたファイルをインポートする(5)

このようにデータベースをダンプしたファイルを新しいデータベースからインポートすると、データベースを再構築することができます。

-- --

.read コマンドを使ってダンプしたファイルをインポートする方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。