データベースを作成するためにバッチファイルでまとめて 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 つで扱えるのでお手軽でした。