データベースのバックアップとレストア(.backupコマンド / .restoreコマンド)
SQLite でデータベースのバックアップを行う場合、データベース毎に作成されるファイルを単にコピーしておくだけでもいいですし、別のページで解説したダンプとインポートでも行うことができます。ここでは SQLite の環境で .backup コマンドと .restore コマンドを使ってデータベースのバックアップとレストアを行う方法について解説します。
(Last modified: )
.backupコマンドを使ったバックアップ
まずは .backup コマンドを使ったデータベースのバックアップ方法です。書式は次の通りです。
.backup ?DB? FILE
1番目の引数にはバックアップするデータベース名を指定します。省略された場合は main となります。 main はデータベースに接続した時に自動で割り当てらるデータベース名で、通常は省略して構いません。アタッチしたデータベース名をバックアップしたい場合にはデータベース名を指定して下さい。(データベース名に関しては「接続中のデータベースの確認」を参照して下さい)。
2番目の引数にはバックアップするファイル名を指定して下さい。ファイル名や拡張子は自由に決めて頂いて構いません。存在していないファイル名を指定した場合は新規にファイルが作成されてバックアップが行われます。
-- --
では実際に試してみます。まずバックアップを行うデータベースに接続して下さい。現在データベースには2つのテーブルが含まれています。
.tables
このデータベースをバックアップします。バックアップするファイル名には今回はカレントディレクトリの myfriend.back ファイルを指定しました。このファイルは現在存在していませんので自動的に新しいファイルが作成されます。
.backup ./myfriend.back
バックアップは完了しました。カレントディレクトリを見てみると myfriend.back というファイルが作成されています。(なおこのファイルはテキストファイルではありませんのでエディタで中身を確認することはできません)。
これでデータベースのバックアップは完了です。
.restoreコマンドを使ったレストア
続いて .restore コマンドを使ってバックアップされたデータベースからレストアする方法です。書式は次の通りです。
.restore ?DB? FILE
1番目の引数にはレストアするデータベース名を指定します。省略された場合は main となります。2番目の引数にはレストアするバックアップファイル名を指定します。
レストアを行うには最初にデータベースに接続してから行いますが、レストアを実行すると現在接続しているデータベースに含まれているテーブルやデータなどがすべて削除された上でレストアが行われますのでご注意下さい。
----
では実際に試してみます。今回は新しいデータベース newdb.sqlite3 を作成した上で、作成したデータベース上でレストアを行います。最初にデータベースを作成します。
sqlite3 newdb.sqlite3
レストアを行います。引数に先ほどバックアップ先として指定した myfriend.back ファイルを指定して .restore コマンドを実行して下さい。
.restore ./myfriend.back
レストアは完了しました。バックアップされたファイルに保存されていたデータでデータベースの内容が書き換えられています。
テーブルが作成されたかどうかを確認してみると、2つテーブルが作成されていることがわかります。
.tables
次にテーブルにデータが格納されているかどうかを確認します。どちらのテーブルにもインポートしたファイルに記述されていた通りにデータが格納されています。
select * from user;
select * from color;
レストアを行うことで、バックアップしていたデータベースを新しいデータベース上で復元させることができます。
-- --
.backup コマンドを使ってデータベースをアックアップする方法、そして.restore コマンドを使ってレストアする方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。