2013年4月23日火曜日

SQLite3における.readと.modeとTSVの.import

SQLite3のデータベースの構築についての備忘録。

件のTSVはもちろん"Tab Separated Values"形式で通常はテキストファイルにColumnの区切りをTab、Rowの区切りをLFで記録した最も簡単なデータテーブルのそれ。

SQLite3でTSVをテーブルにロードするには先行して`.mode tabs`する必要がある。

そんな具合で手順は、

  1. データベースを設計する
    (ER図なり、行と列と型とその他の情報が10年後に見てもわかるよーな資料を作る)
  2. 設計に基づいて初期(テスト)データをTSVで作る
    (ここでTSV以外にも選択肢はあるし、TSVの作成も表計算ソフトで作成してエクスポートしても構わない)
  3. 設計に基づいて構築用の.sqlを書く
    (内容は下記参照)
  4. sqlite3を叩く
    (必要に応じて簡単な.shなど買いて使っても良い)
手順3.で用意の"initialize.sql"は例えばこんな感じ。.importの前に".mode tabs"しているところがTSVをインポートする際の大切な点の1つ。それが何を意味するのか、tabsの他にはどんなモードがあるのかは.helpでも見て調べると良い。

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE "table1" (
    "col1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "col2" TEXT NOT NULL
    );
CREATE TABLE "table2" (
    "col1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "col2" TEXT NOT NULL
    );
COMMIT;
.mode tabs
.import table1.tsv table1
.import table2.tsv table2

手順4.で叩くsqlite3のコマンドはこんな感じ。
sqlite3 database ".read initialize.sql"

(以下、余談)

ちなみにSQLite3管理GUIであれば
あたりを使っても良いでしょう。

0 件のコメント:

コメントを投稿