我需要获取 SQLite 数据库中的列名及其表。我需要的是一个包含 2 列的结果集:table_name | column_name
.
在 MySQL 中,我可以通过数据库上的 SQL 查询来获取此信息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)
因为我没有表名,所以对我不起作用。我想获取数据库中所有列的元数据。
有没有更好的方法通过查询数据库来获取该信息作为结果集?
您基本上已经在问题中命名了解决方案。
要获取表(和视图)的列表,请查询 sqlite_master,如下所示
SELECT name, sql FROM sqlite_master
WHERE type='table'
ORDER BY name;
(see SQLite 常见问题解答)
要获取有关特定表中的列的信息,请使用PRAGMA table_info(table-name);
如中所解释的SQLite PRAGMA 文档.
我不知道有什么方法可以让表名|列名作为单个查询的结果返回。我不相信 SQLite 支持这个。您最好的选择可能是同时使用这两种方法来返回您正在查找的信息 - 首先使用 sqlite_master 获取表列表,然后循环遍历它们以使用 PRAGMA table_info() 获取其列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)