トップページ 本棚 メモ帳 告知板 道具箱 サイトの表示設定 リンク集 Twitter

sqlite3でテーブルをエクスポート

Tags:

sqlite3でテーブルをファイルに書き出す方法を知りたかったので調べた。対象のデータベースファイルがあるディレクトリへ移動してコンソールからsqlite3 <データベースファイル名>と入力してデータベースに接続、そこから以下のようなイメージで入力。

.separator "\t"
.headers on
.output characterData.txt
SELECT * FROM characterData;
.output episodeData.txt
SELECT * FROM episodeData;
.output titleData.txt
SELECT * FROM titleData;
.exit

コマンドの意味は以下の通り。

.separator "\t"
データの区切りとしてTABを使用することを宣言している。OracleのSQL*Plusで言う所のset colsep
.headers on
テーブルの列名を先頭に表示させる。後で.importするときを考えてonにしているが、不要なら記述しなくても良い。
.output <ファイル名>
出力先をファイルにする。こうすることで実質的にテーブルの中身をテキストへ保存することができる。出力先が変わるので画面にはSELECT文の結果が表示されない。

テーブルを書き出すたびに宛先ファイル名を変える必要がある点には要注意。変えなくてもエラーにはならないが、レイアウトの違うテーブルが下にくっつく形になるのでバックアップデータとして使うのが難しくなる。都度.outputコマンドを実行すること。

毎回コマンドを手で打ち込むのは面倒なので、上のソースをexport-cmd.txtなど適当な名前で保存し、sqlite3 <データベースファイル名> < export-cmd.txtとしてリダイレクトでsqlite3に渡すと楽。