SQLite3でテーブル情報の取得

sqlite3データベースから、テーブル・カラム情報を取得する方法に関するメモ

テーブル一覧を取得

  • SQLで取得
    sqlite3のマスタテーブルsqlite_masterをクエリする。
sqlite> select * from sqlite_master;
 
table|sqlite_sequence|sqlite_sequence|3|CREATE TABLE sqlite_sequence(name,seq)
table|sampleTbl2|sampleTbl2|4|CREATE TABLE `sampleTbl2` (
    `Id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `TextValue` TEXT,
    `NumberValue`   NUMERIC NOT NULL,
    `DateValue` TEXT DEFAULT (datetime('now','localtime')),
    `ComboList` INTEGER NOT NULL,
    `RadioButton`   TEXT NOT NULL,
    `CheckBox`  TEXT NOT NULL DEFAULT 1,
    `Comment`  BLOB
)
  • sqlite_masterのテーブル情報
    タイプ(type)
    名称(name)
    テーブル名(tbl_name)
    ルートページ(rootpage)
    Create TableのSQL文(sql)

  • sqliteの対話コマンドで取得する場合

sqlite> .tables sampleTbl2

特定のテーブルのカラム情報取得

  • SQLで取得
pragma table_info( テーブル名 );
 
sqlite> pragma table_info(sampleTbl2);
0|Id|INTEGER|1||1
1|TextValue|TEXT|0||0
2|NumberValue|NUMERIC|1||0
3|DateValue|TEXT|0|datetime('now','localtime')|0
4|ComboList|INTEGER|1||0
5|RadioButton|TEXT|1||0
6|CheckBox|TEXT|1|1|0
7|Comment|BLOB|0||0

各カラムに格納される値は以下の通り

  1. 0から始まるカラムID
  2. カラム名
  3. データタイプ
  4. NOT NULLの場合は1、そうでない場合は0。
  5. デフォルト値。ない場合はNULL。
  6. プライマリキーの場合は1それ以外は0

sqliteの対話コマンドで取得する場合

sqlite> .schema sampleTbl2
CREATE TABLE `sampleTbl2` (
    `Id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `TextValue` TEXT,
    `NumberValue`   NUMERIC NOT NULL,
    `DateValue` TEXT DEFAULT (datetime('now','localtime')),
    `ComboList` INTEGER NOT NULL,
    `RadioButton`   TEXT NOT NULL,
    `CheckBox`  TEXT NOT NULL DEFAULT 1,
    `Comment`  BLOB
);
-->