データベースをダンプ

SELECT文などでテーブルに格納されているデータを取得することができますが、データだけでなくテーブルの構造なども含むデータベースに関する情報をSQL文の形式で出力することをダンプといいます。SQLiteでダンプを行うには「.dump」コマンドを使います。書式は次のとおりです。

.dump ?TABLE? ...

引数を省略して「.dump」コマンドを実行した場合はデータベースに関する全ての情報をダンプします。引数にテーブル名を指定した場合は、そのテーブルに関してだけダンプを行います。

では2つのテーブルが含まれているデータベースに接続した状態で「.dump」コマンドを実行してみます。

.dump

p4-1

今回の場合ダンプされる内容は、テーブルを作成するためのCREATE TABLE文と、そのテーブルに格納されているデータ毎にINSERT文が含まれています。ダンプされた内容は現在のデータベースと同じものを再度構成するために必要なSQL文からなっています。

なお引数にテーブル名を指定すれば、そのテーブルに関してだけダンプを行います。

.dump customer

p4-2

複数のテーブルを指定する場合は空白を区切り文字として続けてテーブル名を指定して下さい。

.dump customer goods

p4-3

ダンプした内容をファイルへ出力

なおダンプは通常ファイルなどに対し行います。出力先を指定するオプションはありませんので、「.output」コマンドを使って出力先をstdoutからファイルに事前に変更しておき、その後でダンプを行って下さい。(「.output」コマンドについては「ファイルに対して出力を行う(.outputコマンド)」を参照して下さい)。

p4-4

出力先を「./data/dump.txt」に変更してから「.dump」コマンドを実行していますので、ダンプされた内容は「dump.txt」ファイルに対して出力されます。実際にファイルを確認すると次のようになっています。

p4-5

ダンプされた内容がファイルに対して出力されていることが確認できました。