2011-08-02 30 views
1

对于我想知道我的数据库,即哪些表在我的数据库结合,对于被包括列的每个表等我怎样才能接收SQLite数据库布局?

sqlite_master表仅包含表信息的布局的向后兼容性的目的。理论上,我可以通过SQLite API访问这些元数据信息,如sqlite3_column_database_name,sqlite3_column_table_name,sqlite3_column_origin_name

我能有直接SQL查询接收这个数据,或者在内部存储?

+0

的SQLITE_MASTER表包含哪些表有说明。它没有列出你实际使用的表或列; SQLite根本不理解。 –

+0

我可以不清楚地解释:我不想知道“我实际使用的是哪些表格或列”,我希望得到“有哪些表格的描述”以及哪些**列表包含在这些列表中表。 – Ilia

回答

3

那么它不是stricly讲SQL,可被访问 SQL中的所有源码实现我所知道的:

http://www.sqlite.org/pragma.html#pragma_table_info

一个例子:

sqlite> .headers on 
sqlite> .mode column 
sqlite> CREATE TABLE foo (id INTEGER PRIMARY KEY AUTOINCREMENT, text1 TEXT NOT NULL, text2 TEXT, boolean1 BOOLEAN NOT NULL); 
sqlite> pragma table_info('foo'); 
cid   name  type  notnull  dflt_value pk   
---------- ---------- ---------- ---------- ---------- ---------- 
0   id   INTEGER  0      1   
1   text1  TEXT  1      0   
2   text2  TEXT  0      0   
3   boolean1 BOOLEAN  1      0   
+0

非常感谢。这是我正在寻找的,这种方法的工作原理! – Ilia

+0

感谢.mode列正是我正在寻找使选择结果易于阅读 – zhihong

0

我想收到“有什么表格的描述”

我很确定你的意思是什么。

您可以通过.schema获取重新创建架构所需的SQL语句。

sqlite> .schema 
CREATE TABLE a (n integer); 
CREATE TABLE b (n integer); 

此外,.dump会给你那些相同的SQL语句,这将增加INSERT statments再现数据。

如果你想要的部分只是表的列表,那么.tables将为你做。

Documentation(向下滚动到“特殊命令。”)

+0

_.schema_和_.tables_只是'SELECT sql FROM sqlite_master;'和'SELECT name FROM sqlite_master WHERE type ='的快捷方式表';'相应地(当然实际使用的语句更复杂 - 检查你的[参考](http://www.sqlite.org/sqlite.html) – Ilia

相关问题