Sqlite3でsqlファイルからクエリを実行する

sqlite3データベースを使用する場合、sqlファイルからどうやってクエリを実行するかのメモ

シェルなどの外部プログラムから実行する場合は、以下のようにDBファイルに対して、SQLファイルリダイレクトするような感じで実行する。

# sqlite3 [ データベースファイル名 ] < [ SQLファイル名 ]

実際に実行すると、|が区切り文字になってコンソールに出力される。

# sqlite3 sample.db < test.sql
1|aaaa|123|2014.04.11|2|C|2|xxxxxxxx
2|bbb|9876|2014.07.17|1|A|0|zzz

sqlite3のコンソール内からは.readコマンドで実行する。

# .read [ SQLファイル名 ]

逆にDBの内容をsqlファイルダンプしたい場合は、.dumpコマンドを実行する。.dumpコマンドは引数にテーブル名を指定すると、そのテーブルデータのINSERT文が出力されるが、引数を指定しないと全体のダンプになり、CREATE TABLEとINSERTが出力される。出力されたsqlファイルを使えば、バックアップ&リストアできるようになる。

.outputコマンドで出力先を指定する
# .output ./backup.sql
.dumpコマンドで出力
# .dump