SQLite Schema信息元数据
|
我需要在SQLite数据库中获取列名及其表。我需要一个包含2列的结果集:
table_name | column_name
。
在MySQL中,我可以通过数据库INFORMATION_SCHEMA
上的SQL查询获取此信息。但是,SQLite提供表sqlite_master
:
sqlite> create table students (id INTEGER, name TEXT);
sqlite> select * from sqlite_master;
table|students|students|2|CREATE TABLE students (id INTEGER, name TEXT)
这会导致DDL构造查询(CREATE TABLE
)对我无济于事,我需要对此进行解析以获取相关信息。
我需要获取表列表并将其与列连接,或者仅将列与表名称列一起获取。因此,table5 name对我不起作用,因为我没有表格名称。我想获取数据库中的所有列元数据。
是否有更好的方法通过查询数据库来获取该信息作为结果集?
没有找到相关结果
已邀请:
7 个回复
bab
(请参阅SQLite常见问题解答) 要获取有关特定表中列的信息,请使用SQLite PRAGMA文档中所述的“ 7”。 我不知道以任何查询的方式返回tablename | columnname的任何方法。我不相信SQLite支持这一点。最好的选择是将这两种方法一起使用以返回您要查找的信息-首先使用sqlite_master获取表列表,然后使用PRAGMA table_info()遍历它们以获取其列。
懊毁暗
希望能在某种程度上有所帮助...
磐剩
方法来检索通常位于INFORMATION_SCHEMA中的信息。如果您有一个抽象层,则可以为所有类型的数据库使用相同的代码(注意,MySQL似乎将限制数组的第1个第2个参数夹在中间)。
蜗仓馈
朱拉杰 PS。我习惯使用\'where 1 = 0 \'的习惯,因为记录限制的语法似乎因数据库而异。此外,一个好的数据库将优化这个永远为假的子句。 在SQLite中,使用\'limit 0 \'可获得相同的效果。
漂汀拦
其中
保存CREATE TABLE语句的列顺序(零索引)。 David Garoutte在这里回答了这个问题,但是此SQL应该执行得更快,并且列是按架构排序的,而不是按字母顺序排序。 请注意,“ 13”也包含
(数据类型,例如
或
),
(如果列具有
约束,则为
)
(如果没有默认值,则为
)
(如果列是表的主键,则为
,否则为
) RTFM:https://www.sqlite.org/pragma.html#pragma_table_info
厦惫
屑凉赦