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
各カラムに格納される値は以下の通り
- 0から始まるカラムID
- カラム名
- データタイプ
- NOT NULLの場合は1、そうでない場合は0。
- デフォルト値。ない場合はNULL。
- プライマリキーの場合は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
);