我需要在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),这对我没有帮助,我需要解析这个以获得相关信息。
我需要获取表的列表,并将它们与列连接,或者只是获取列与表名列。所以PRAGMA table_info(TABLENAME)不适用于我,因为我没有表名。我想获得数据库中的所有列元数据。
你基本上在你的问题中命名解决方案。
SELECT name,sql FROM sqlite_master WHERE type='table' ORDER BY name;
要获取有关特定表中的列的信息,请使用PRAGMA table_info(table-name);如the SQLite PRAGMA documentation所述。
我不知道有什么办法获得tablename |列名作为单个查询的结果返回。我不相信sqlite支持这一点。你最好的选择是使用这两种方法来返回所需的信息 – 首先使用sqlite_master获取表的列表,然后使用PRAGMA table_info()遍历它们的列。