我需要获取SQLite数据库中列名和它们所在的表。我需要一个包含两个列的结果集:table_name | column_name
。
在MySQL中,我可以通过查询数据库INFORMATION_SCHEMA
来获取这些信息。然而,在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
),对我不太有用,我需要解析它以获取相关信息。
我需要获取表列表并将其与列连接,或者只获取带有表名列的列。因此,PRAGMA table_info(TABLENAME)
对我不起作用,因为我没有表名。我想获取数据库中所有列的元数据。
有没有更好的方法通过查询数据库来获取这些信息作为结果集?
PRAGMA table_info()
确实会返回列数据。我知道你正在寻找一个一步解决方案,只返回tablename|columname,而我建议的是一个可以在某种程序中使用的解决方法(两个步骤)。虽然我的答案并没有真正引入任何新信息,但我相信它可能会帮助某些人。据我所知,没有更好的方法...抱歉。但我不介意被证明是错误的 :-) - Tom Juergenspragma
命令可以做到那个,但如果我有100张表,首先我需要从sqlite_master
获取表列表,然后我就需要执行100次pragma
请求,这不是我想要的。 - ahmet alp balkan