SQLite 架构信息元数据

2023-11-26

我需要获取 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(使用前将#替换为@)

SQLite 架构信息元数据 的相关文章

  • SQLITE 文件已加密或不是数据库

    我有一个大问题 我正在使用 SQLite 开发一个桌面应用程序 但在复制 粘贴过程中我断电并且该过程终止 因此数据库丢失 但是 我找到了恢复它的方法 但是数据库是加密的 当我尝试使用打开连接时conn Open 我收到错误 SQLITE 已
  • SQLite 列错误:表 XXX 没有名为 YYY 的列

    我查看了以下内容 但没有发现任何与我的问题相符的内容 据我所知 android database sqlite SQLiteException 表 X 没有名为 Y 的列 编译时 INSERT INTO https stackoverflo
  • 在iOS中启动应用程序时如何复制sqlite数据库?

    每次启动应用程序时 我想将带有最新更新的 sqlite 数据库从数据库位置复制到我的 iOS 应用程序 有什么办法可以做到吗 您可以将以下方法添加到您的应用程序委托中 void copyDatabaseIfNeeded Using NSFi
  • 如何在Android(模拟器)中查找并清除SQLite db文件

    我刚刚启动并运行了我的第一个 SQLite 数据库 但是为了重现它 我想要一种快速的方法来清除 db 文件 这样我就可以调用我的openOrCreateDatabase再次方法 第一个问题 我在网上看到的 data data PKG dat
  • 如何在 SQLite 中返回多行插入的 id?

    给定一个表 CREATE TABLE Foo Id INTEGER PRIMARY KEY AUTOINCREMENT Name TEXT 如何使用以下命令返回同时插入的多行的 id INSERT INTO Foo Name VALUES
  • Asp.net core - 没有这样的表:AspNetUsers

    所以我试图为我的 asp net core 应用程序实现用户登录 我正在关注微软教程here https docs asp net en latest security authentication identity html 我有两个上下
  • 如果存在 sqlite 则重命名列?

    我创建了一个最初未使用的列 但现在我们正在设置和获取值 我发现列名不正确 以及我想要更改列名称但想要保留设备中现有数据库的数据 有任何疑问吗检查并重命名sqlite 列 像这样的东西 Alter Table MyTable RENAME C
  • Android SQLite 列和索引最佳实践

    我开始在我的 Android 应用程序中使用 SQLite 我对数据库并不陌生 我有很多年使用 Delphi 进行数据库工作的经验 这确实减轻了使用数据库的一些工作 在应用程序中 可能有一张包含多列的表格 从表中读取数据时 会执行一些 SQ
  • 在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults)

    当我开发 iPhone 应用程序 时间跟踪器 待办事项列表等 时 我永远不知道处理数据的最佳方式是什么 有一次我使用了 plist 下次使用 sqlite 或 CoreData 您如何决定什么最适合您的项目 只谈数据管理 例如 如果您想开发
  • 从什么时候起sqlite的持久日志模式成为Android中的默认日志模式?

    从什么时候起sqlite的持久日志模式成为Android中的默认日志模式 我知道Android版本4 1 1 API 16 中的日志模式已经改变 但这并不准确 因为发行说明中不包含此信息 我不知道是否可以在发行说明中找到 如果您认识的人确切
  • 关于android Sqlite在多进程情况下的安全性

    在我的应用程序中 存在多个进程 并且在每个进程中 我需要访问同一个SQLite数据库 当然 这意味着超过2个线程 所以我不仅担心SQLite的线程安全性 还担心SQLite的线程安全性 还有过程安全 这种情况的一种解决方案是使用内容提供者
  • SQlite删除内连接

    我已经阅读了很多其他答案 但无法使其正常工作 select from invTypes inner join invGroups on invtypes groupID invgroups groupID where invGroups c
  • 使用 SQLite 创建列表树

    我正在尝试使用 PHP 和 SQLite 表设置创建一个分层列表 如下所示 itemid parentid name 1 null Item1 2 null Item2 3 1 Item3 4 1 Item4 5 2 Item5
  • 如何在SQLite中的两个表之间复制数据?

    我有两个具有不同列的表 如下所示 table1 id title name number address table2 id phone name address 如何将数据 名称 地址 从表 1 复制到表 2 我的问题有两种情况 第一 t
  • 从核心数据存储创建 .sqlite 文件?

    我在书籍和提供 sqlite 文件下载的网站上看到过教程 sqlite 文件用于核心数据 如何获取 sqlite 文件FROM应用程序或核心数据存储TO我的桌面 如果您要创建一个预填充的 sqlite 文件以与 Core Data 一起使用
  • sqlite 插入表中 select * from

    我需要在 Android 应用程序中将数据从一个表移动到另一个表 我想使用以下sql insert into MYTABLE2 select id STATUS risposta DATETIME now data ins from MYT
  • Mac 上的 GeoDjango 和 Spatialite:C 扩展加载问题

    我正在关注GeoDjango 教程 https docs djangoproject com en dev ref contrib gis tutorial 在我的家用计算机 运行 OSX 10 8 2 的 Mac Mini 上为我的项目设
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • 游标在“查询、删除表、创建表、查询相同表名”后返回相同的列

    例如我有一个名为myTable在我的数据库文件中 Android ps它不支持列重命名 删除等 这张表有idx name columns 我想删除并重新创建该表 但使用新列 我是这样做的 db transaction var cursor
  • Android 中表与游标的并集

    我正在尝试将两个具有相同字段的表合并起来 通过内容提供程序 创建一个用于创建 ListView 的游标 Override public Cursor query Uri uri String projection String select

随机推荐