我怎样才能收到SQLite数据库布局?

时间:2011-08-02 10:25:54

标签: sqlite

为了向后兼容的目的,我想知道我的数据库的布局,即哪些表包含在我的数据库中,每个表包含哪些列等等。

sqlite_master表仅包含表信息。从理论上讲,我可以通过SQLite API访问此元数据信息,例如sqlite3_column_database_namesqlite3_column_table_namesqlite3_column_origin_name

我是否可以直接 SQL查询来接收此数据,或者将其存储在内部?

2 个答案:

答案 0 :(得分:3)

嗯,严格来说不是SQL,但是在我知道的所有sqlite实现中它都可以作为 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         

答案 1 :(得分:0)

  

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

我很确定你的意思。

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

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

此外,.dump将为您提供相同的SQL语句,并且它将添加INSERT语句以重现数据。

如果您想要的部分只是一个表格列表,那么.tables将为您做到这一点。

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