はじめに
SQLite はちょっとしたツールのデータを格納するのに手軽に使えるデータベースです。Mac やほとんどの Linux 系 OS では標準でインストールされているのも魅力です。
今回は、SQLite に格納したデータのダンプを取得する方法を紹介します。出力される SQL を他のデータベースサーバーに移行したり、分散していたホストのデータを1つにまとめるために実施したりと何かと必要になってくる操作かと思います。
SQLite にあるテーブルの一覧を取得する
$ sqlite3 mydb.sqlite
sqlite> .table
SQLite のダンプを取得する
sqlite のデータを SQL 文としてエクスポートします。
$ sqlite3 mydb.sqlite
sqlite> .output ./mydb-dump.sql
sqlite> .dump
sqlite> .output stdout
sqlite> [Ctrl + d]
テーブル毎に取得する場合はテーブルを指定します。
$ sqlite3 mydb.sqlite
sqlite> .output ./mydb-mytable-dump.sql
sqlite> .dump mytable
sqlite> .output stdout
sqlite> [Ctrl + d]
エクスポートされる SQL ファイルの先頭にはテーブル定義も出力されます。また、データ部分の先頭と末尾にはインポートにかかる時間を短縮するため、COMMIT は最後に 1 回だけ実行されるよう「BEGIN TRANSACTION;」と「COMMIT;」がそれぞれ追加されます。