如何获得SQLite数据库表中列的列表?
我正在寻找检索表中列的列表。 数据库是最新版本的SQLite(3.6,我相信)。 我正在寻找与SQL查询做到这一点的代码。 与列相关的元数据的额外奖励点数(例如长度,数据types等)
你正在寻找的是数据字典。 在sqlite中,可以通过查询sqlite_master表(或视图?)find所有表的列表
sqlite> create table people (first_name varchar, last_name varchar, email_address varchar); sqlite> select * from sqlite_master; table|people|people|2|CREATE TABLE people (first_name varchar, last_name varchar, email_address varchar)
要获取列信息,您可以使用pragma table_info(table_name)
语句:
sqlite> pragma table_info(people); 0|first_name|varchar|0||0 1|last_name|varchar|0||0 2|email_address|varchar|0||0
有关杂注语句的更多信息,请参阅文档 。
这是简单的方法:
.schema <table>
只需进入你的sqliteshell:
$ sqlite3 path/to/db.sqlite3
然后就打了
sqlite> .schema
你会得到一切。
问题是旧的,但以下还没有提到。
在许多情况下,另一个方便的方法是打开标题:
sqlite> .headers on
然后,
sqlite> SELECT ... FROM table
将在输出的顶部显示一个标题,显示所有select的字段(如果您select*,则全部)。
build立在上面,你可以一次做到这一切:
sqlite3 yourdb.db ".schema"
这会给你SQL创build表,这是有效的列的列表。
我知道,这已经很长时间了,但是不会太迟……我和TCL有过类似的问题,经过几次search,发现对我来说没什么好处。 所以我build议基于PRAGMA,知道你的DB是“主”
db eval { PRAGMA main.table_info(<your table name>) } TBL { puts $TBL(name) }
和数组用来获取一个列表
set col_list {} db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) } puts $col_list