データベースをダンプする(.dumpコマンド)
データベースに含まれているテーブルなどの情報を SQL 文の形で出力することをダンプと呼びます。ダンプを行うと例えばテーブルの構造やテーブルに格納されている 1 つ 1 つのデータについて SQL 文の形で出力されます。ここでは SQLite におけるダンプの使い方について解説します。
なお、ダンプした内容を新しいデータベースでインポートして、データベースを再構築する方法については「ダンプをインポートしてデータベースを再構築する(.readコマンド)」を参照されてください。
(Last modified: )
ダンプの使い方
SQLite でダンプを行うには .dump コマンドを使います。書式は次のとおりです。
.dump ?TABLE? ...
引数を省略して .dump コマンドを実行した場合はデータベースに関する全ての情報をダンプします。引数にテーブル名を指定した場合は、そのテーブルに関してだけダンプを行います。
それでは2つのテーブルと1つのインデックスが作成されているデータベースに接続し .dump コマンドを実行してみます。
.dump
例えばテーブルの場合であれば、現在作成されているテーブルと同じものを作成するための CREATE TABLE 文、そしてテーブルに格納されているデータと同じデータを格納するための INSERT 文が出力されています。この出力された SQL 文を順に実行していくことで現在のデータベースと同じデータベースを作成することができます。
データベース全体だはなく特定のテーブルに関するダンプだけを行いたい場合は引数にテーブル名を指定します。例として user テーブルに関するダンプを出力してみます。
.dump user
ダンプした結果をファイルへ出力
ダンプした内容はファイルへ出力して利用するケースが多いと思いますが、ファイルへ出力するようなオプションは用意されています。そこでファイルへ出力したい場合には .output コマンド使って画面に対する出力を指定したファイルに対する出力に変更してからダンプを行います。( .output コマンドについては「SELECT文の実行結果などをファイルへ出力する(.outputコマンド)」を参照して下さい)。
実際に試してみます。まずダンプの実行結果をカレントディレクトリにある dump.txt ファイルへ出力するように .output コマンドを実行します。このコマンドを実行すると .dump コマンドだけでなく SELECT 文などの実行結果もすべて画面ではなくファイルに書き込まれます。
.output ./dump.txt
出力先がカレントディレクトリにある dump.txt へ変更されました。次に .dump コマンドを実行します。
.dump
ダンプした結果は画面ではなくファイルに対して出力しているため画面上には何も表示されません。
カレントディレクトリを見て頂くと dump.txt というファイルが新しく作成されています。
dump.txt ファイルはテキストファイルですのでテキストエディタで開いて見て下さい。ダンプした結果がファイルに書き込まれていることが確認できます。
最後に出力先をファイルから画面に戻します。引数に stdout を指定して .output コマンドを実行してください。
.output stdout
なおファイルに対して出力した時にファイルが読み込み専用でしか開けない場合には、出力先をファイルから画面に戻すかコマンドラインツールを終了すれば読み取り専用ではなくなります。
-- --
データベースに含まれているテーブルなどの情報を SQL 文の形で出力するダンプの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。