バックアップとレストア
SQLiteでデータベースのバックアップを行う場合、データベース毎に作成されるファイルを単にコピーしておくだけでもいいですし、別のページで解説したダンプとインポートでも行うことができます。ここではそれ以外の方法として「.backup」コマンドと「.restore」コマンドを使った方法について解説します。
まずは「.backup」コマンドを使ったデータベースのバックアップ方法です。使書式は次の通りです。
.backup ?DB? FILE
1番目の引数にはバックアップするデータベース名を指定します。省略された場合は「main」となります。「main」はデータベースに接続した時に自動で割り当てらるデータベース名で、通常は省略して構いません。アタッチしたデータベース名をバックアップしたい場合にはデータベース名を指定して下さい。(データベース名に関しては「接続中のデータベースの確認」を参照して下さい)。
2番目の引数にはバックアップするファイル名を指定して下さい。ファイル名や拡張子は自由に決めて頂いて構いません。存在していないファイル名を指定した場合は新規にファイルが作成されてバックアップが行われます。
続いて「.restore」コマンドを使ってバックアップされたデータベースからレストアする方法です。書式は次の通りです。
.restore ?DB? FILE
1番目の引数にはレストアするデータベース名を指定します。省略された場合は「main」となります。2番目の引数にはレストアするバックアップファイル名を指定します。
レストアを行うと現在のデータベースに含まれているテーブルやデータなどが削除された上でレストアが行われますのでご注意下さい。
----
では実際に試してみます。まずバックアップを行うデータベースに接続して下さい。現在データベースには2つのテーブルが含まれています。
テーブルの1つであるproductテーブルには次のようなデータが格納されています。
このデータベースをバックアップします。バックアップするファイル名には今回はカレントディレクトリの「backuptest.bk」ファイルを指定しました。このファイルは現在存在していませんので自動的に新しいファイルが作成されます。
.backup ./backuptest.bk
バックアップは完了しました。カレントディレクトリを見てみると「backuptest.bk」というファイルが作成されています。(なおこのファイルはテキストファイルではありませんのでエディタで中身を確認することはできません)。
続いてレストアを行います。新しいデータベースを作成してそのデータベースの上でレストアすることもできますが、今回は元々のデータベース上でレストアを行ってみます。
レストアする前と後で比較を行う為に、レストアをする前にデータベースからproductテーブルを削除しておきます。
ではレストアを行います。先ほど保存しておいた「backuptest.bk」ファイルを指定して「.restore」コマンドを実行して下さい。
.restore ./backuptest.bk
レストアは完了しました。バックアップされたファイルに保存されていたデータでデータベースの内容が書き換えられているため、レストア実行後にデータベースに含まれるテーブルを確認すると先ほど削除したテーブルが元に戻っていることが確認できます。
「.backup」コマンドと「.restore」コマンドを使ってデータベースのバックアップとレストアを行う方法について解説しました。
( Written by Tatsuo Ikura )