2009-03-03 92 views

回答

100

您正在查找的内容称为数据字典。 SQLite中所有表的列表可通过查询SQLITE_MASTER表中找到

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 

欲了解更多关于该编译报表,请参阅documentation

+5

太好了!现在这是如何从命令行外部完成的?这是如何在我自己的C程序中完成的? – 2013-09-27 13:56:14

+0

我如何在Objective-c – 2014-05-20 09:27:25

16

刚刚进入你的sqlite的外壳:

$ sqlite3 path/to/db.sqlite3 

,然后只打

sqlite> .schema 

,你会得到一切。

43

这里的简单的方法:

.schema <table> 
16

的问题是旧的,但以下尚未提及。

在许多情况下,另一种方便的方法是打开的标题:

sqlite> .headers on 

然后,

sqlite> SELECT ... FROM table 

将显示出所有选定字段标题(所有的,如果你选择*)在输出的顶部。

1

楼以上,你可以一次做这一切:

sqlite3 yourdb.db ".schema" 

这会给你的SQL创建表,这是有效的列的列表。

0

我知道,这已经很长时间了,但它永远不会太晚... 我和TCL有类似的问题作为解释器,经过几次搜索后,发现对我来说没有好处。所以,我提出了一种基于PRAGMA东西,知道你的数据库是“主”

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 
相关问题