sqlite上的information_schema.columns

时间:2009-04-18 14:31:15

标签: database sqlite schema

我想做下一个查询:

SELECT table_name, column_name, data_type, is_nullable, ... 
FROM information_schema.columns

在sqlite数据库上。

我检查了

PRAGMA table_info(table_name); 

但不符合我的需要,只需检查一个表的字段。

我检查了

select * from sqlite_master where type = 'table';

但这只是获取表名和创建查询。

有没有办法将这些“加入”方法?或任何其他建议或想法? TX

3 个答案:

答案 0 :(得分:4)

我知道您不想听到这个,但是您无法使用SQLite从SQL进行连接。 table_info pragma未映射到标准查询,而是映射到SQLite源中的虚拟机程序。该程序仅支持单个表。完全停止。 :)

如果您的需求只是测试,那么编写脚本来做您想做的事情应该不会太难。否则,您必须将此内容写入您的应用程序。无论哪种方式,您将使用sqlite_master查询从sqlite_master中选择表名,使用sqlite3_mprintf("pragma table_info(%s);",name)从中进行SQL查询,并准备/执行该查询。

答案 1 :(得分:3)

SQLite C API对此类内容有更多的支持;例如,请参阅this page

答案 2 :(得分:3)

仅供参考,如果您使用的是.Net,则可以使用DbConnection.GetSchema方法检索通常位于INFORMATION_SCHEMA中的信息。如果你有一个抽象层,你可以为所有类型的数据库使用相同的代码(注意MySQL似乎是限制数组的前2个参数)。