SQLite データベースをバッチファイルで作成する

データベースを作成するためにバッチファイルでまとめて DDL を実行する方法を調べてみました。

Command Line Shell For SQLite

ここに記載されている通りでした。

ドットコマンドで実行するようです。

CREATE TABLE

SQL を記述したファイルを読み込んで実行するには .read コマンドを使うようです。

$ sqlite3 database.db ".read create_table1.sql"
$ sqlite3 database.db ".read create_table2.sql"
$ sqlite3 database.db ".read create_table3.sql"

公式のページには記載されていないようでしたが、次のコマンドでも同じようです。

$ sqlite3 database.db < create_table1.sql
$ sqlite3 database.db < create_table2.sql
$ sqlite3 database.db < create_table3.sql

CSV Import

マスター的なデータを CSV で用意してインポートできるようです。

$ sqlite3 mode csv database.db ".import table1.csv table1"
$ sqlite3 mode csv database.db ".import table2.csv table2"

CSV Import では NULL で登録することができないようなので、NULL が必要な場合は、インポートしてから長さ 0 の文字列を NULL に更新するようです。

$ sqlite3 database.db "UPDATE TABLE1 SET COL1 = NULL WHERE COL1 = '';"

CSV ファイルは次のように作成されている必要があるようです。

  • UTF-8 の文字コード
  • ヘッダーなし

終わり

SQLite のデータベースはファイル 1 つで扱えるのでお手軽でした。