有什么方法可以检查SQLite3数据库中表的存在和结构?

时间:2018-12-11 20:08:31

标签: sqlite

我正在开发a Rust application for user registration via SSH(就像为SDF工作的人一样)。

我正在使用SQLite3数据库作为后端来存储有关用户的信息。

我正在打开数据库文件(如果不存在,则创建它),但是我不知道检查数据库中是否存在具有预期结构的必要表的方法。

我试图将PRAGMA schema_version用于版本控制,但是这种方法不可靠。

我发现有些帖子的答案与我的问题密切相关:

1 个答案:

答案 0 :(得分:0)

  

我正在打开数据库文件(如果不存在则创建它)   但我不知道检查必要表的方法

我发现查询 sqlite_master 来检查表,索引,触发器和视图以及使用 PRAGMA table_info(the_table_name) 来检查列的列。

例如以下内容将使您获得核心的基本信息,然后能够相对轻松地进行处理(仅用于演示表):-

SELECT name, sql FROM sqlite_master WHERE type = 'table' AND name LIKE 'my%';
  

具有预期结构

PRAGMA table_info(mytable);

第一个结果(例如):-

enter image description here

而第二个结果(用于mytable):-

enter image description here

  • 请注意,所有列的类型均为空白/空,因为创建表的SQL未指定列类型。

如果您使用的是SQLite 3.16.0或更高版本,则可以使用PRAGMA Functions(例如pragma_table_info(table_name)),而不是3.16.0之前的两步方法。