データベースのバックアップとレストア(.backupコマンド / .restoreコマンド)

SQLite でデータベースのバックアップを行う場合、データベース毎に作成されるファイルを単にコピーしておくだけでもいいですし、別のページで解説したダンプとインポートでも行うことができます。ここでは SQLite の環境で .backup コマンドと .restore コマンドを使ってデータベースのバックアップとレストアを行う方法について解説します。

(Last modified: )

.backupコマンドを使ったバックアップ

まずは .backup コマンドを使ったデータベースのバックアップ方法です。書式は次の通りです。

.backup ?DB? FILE

1番目の引数にはバックアップするデータベース名を指定します。省略された場合は main となります。 main はデータベースに接続した時に自動で割り当てらるデータベース名で、通常は省略して構いません。アタッチしたデータベース名をバックアップしたい場合にはデータベース名を指定して下さい。(データベース名に関しては「接続中のデータベースの確認」を参照して下さい)。

2番目の引数にはバックアップするファイル名を指定して下さい。ファイル名や拡張子は自由に決めて頂いて構いません。存在していないファイル名を指定した場合は新規にファイルが作成されてバックアップが行われます。

-- --

では実際に試してみます。まずバックアップを行うデータベースに接続して下さい。現在データベースには2つのテーブルが含まれています。

.tables

.backupコマンドを使ったバックアップ(1)

このデータベースをバックアップします。バックアップするファイル名には今回はカレントディレクトリの myfriend.back ファイルを指定しました。このファイルは現在存在していませんので自動的に新しいファイルが作成されます。

.backup ./myfriend.back

.backupコマンドを使ったバックアップ(2)

バックアップは完了しました。カレントディレクトリを見てみると myfriend.back というファイルが作成されています。(なおこのファイルはテキストファイルではありませんのでエディタで中身を確認することはできません)。

.backupコマンドを使ったバックアップ(3)

これでデータベースのバックアップは完了です。

.restoreコマンドを使ったレストア

続いて .restore コマンドを使ってバックアップされたデータベースからレストアする方法です。書式は次の通りです。

.restore ?DB? FILE

1番目の引数にはレストアするデータベース名を指定します。省略された場合は main となります。2番目の引数にはレストアするバックアップファイル名を指定します。

レストアを行うには最初にデータベースに接続してから行いますが、レストアを実行すると現在接続しているデータベースに含まれているテーブルやデータなどがすべて削除された上でレストアが行われますのでご注意下さい。

----

では実際に試してみます。今回は新しいデータベース newdb.sqlite3 を作成した上で、作成したデータベース上でレストアを行います。最初にデータベースを作成します。

sqlite3 newdb.sqlite3

.restoreコマンドを使ったレストア(1)

レストアを行います。引数に先ほどバックアップ先として指定した myfriend.back ファイルを指定して .restore コマンドを実行して下さい。

.restore ./myfriend.back

.restoreコマンドを使ったレストア(2)

レストアは完了しました。バックアップされたファイルに保存されていたデータでデータベースの内容が書き換えられています。

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

.tables

.restoreコマンドを使ったレストア(3)

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

select * from user;

.restoreコマンドを使ったレストア(4)

select * from color;

.restoreコマンドを使ったレストア(5)

レストアを行うことで、バックアップしていたデータベースを新しいデータベース上で復元させることができます。

-- --

.backup コマンドを使ってデータベースをアックアップする方法、そして.restore コマンドを使ってレストアする方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。