バックアップとレストア

SQLiteはデータベース毎に1つのファイルだけを使用しているため、バックアップを取る場合は単にファイルをコピーするだけで作成できます。

SQLit3でも上記の方法は有効ですが、別に「.backupコマンド」が用意されておりデータベースをバックアップすることができます。書式は次の通りです。

.backup ?DB? FILE

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

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

バックアップされたデータベースはいつでもレストアすることができます。レストアするには任意のデータベースに接続した後で「.restore」コマンドを実行します。書式は次の通りです。

.restore ?DB? FILE

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

あるデータベースに接続している状態でレストアを行うと、そのデータベースの中にバックアップしたデータベースを復元します。レストアが行われる前にデータベース内に存在していたテーブルやデータなどは削除された上でバックアップされていたデータベースがレストアされますので注意して下さい。

具体的には次のように使用します。まずバックアップを行います。

.backup backupfile
.backup main backupfile

接続しているデータベースをバックアップするには2番目の引数に「main」を指定するか省略して下さい。

バックアップしたファイルからレストアします。

.restore backupfile
.restore main backupfile

接続しているデータベースにレストアするには2番目の引数に「main」を指定するか省略して下さい。

サンプル

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

p6-1

このデータベースを「sample.back」というファイルにバックアップします。

.backup sample.back

p6-2

バックアップは完了しました。

では一度データベースとの接続を終了し、改めて別のデータベースに接続します。

p6-3

このデータベースには現在「bookstable」というテーブルが含まれています。

p6-4

ではこのデータベースにバックアップされたデータベースをレストアします。

.restore sample.back

p6-5

レストアされたデータベースに含まれていたテーブルは存在しますが、元々このデータベースに存在していた「bookstable」テーブルは無くなっています。

p6-6