Answers:
您正在寻找的被称为数据字典。在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
有关pragma语句的更多信息,请参见文档。
select * from
吗?
这是简单的方法:
.schema <table>
这是一个查询,其中列出了所有表及其列,以及我可以根据OP请求获得的每一列的所有元数据(作为奖励积分)。
SELECT
m.name AS table_name,
p.cid AS col_id,
p.name AS col_name,
p.type AS col_type,
p.pk AS col_is_pk,
p.dflt_value AS col_default_val,
p.[notnull] AS col_is_not_null
FROM sqlite_master m
LEFT OUTER JOIN pragma_table_info((m.name)) p
ON m.name <> p.name
WHERE m.type = 'table'
ORDER BY table_name, col_id
感谢@David Garoutte向我展示了如何开始pragma_table_info
查询工作。
运行此查询以查看所有表元数据:
SELECT * FROM sqlite_master WHERE type = 'table'
我知道,已经有很长时间了,但是永远不会太晚……我对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