如何获得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