当前位置: 首页 > 面试题库 >

如何在Linux上比较两个SQLite数据库

单于钊
2023-03-14
问题内容

使用Linux,我想比较两个具有相同架构的SQLite数据库。只会有一些差异。

有没有可以输出这些差异的工具?最好将它们输出到命令行,以便我可以grep / sed它们。

SQLite使用SQL,因此一般的SQL工具也可以使用。


问题答案:

请查看2015年5月7日发布的SQLite版本3.8.10。此版本首次包含
sqldiff.exe
实用程序,

用于计算两个SQLite数据库文件之间的差异。该程序很可能也将成为将来版本的一部分。

sqldiff.exe 命令行工具行应为所有支持的操作系统和提供了几个开关的工作用于改变它的输出行为。用法示例:

sqldiff [options] database1.sqlite database2.sqlite

如果未指定任何选项,则 sqldiff.exe
的输出是将database1.sqlite(“源”数据库)转换为database2.sqlite(“目标”数据库)的SQL语句。

但是,也有某些限制。例如, sqldiff.exe 实用程序(至少当前)在TRIGGER,VIEW或虚拟表中不显示差异。

示例命令和输出

我使用了一个简单的键值存储数据库(db1.sqlite),并制作了一个副本(db2.sqlite)。然后,我将一对键值对插入
db2.sqlite。之后,我运行以下命令:

sqldiff db1.sqlite db2.sqlite

并得到以下输出:

插入my_table(rowid,“ key”,value)VALUES(1,’D:\ Test \ Test.txt’,x’aabbccdd’);
更新my_table_size SET计数器= 1,rowid = 1;

my_table_size键值对插入到表后,TRIGGER会自动更新该表my_table。然后,我再次运行 sqldiff.exe
,但是这次使用db2.sqlite作为第一个参数和db1.sqlite第二个参数:

sqldiff db2.sqlite db1.sqlite

并得到以下输出:

从my_table的WHERE rowid = 1处删除;
更新my_table_size SET计数器= 0,rowid = 1;

sqldiff下载链接

自2016年1月20日发布SQLite
3.10.2版以来,可直接从SQLite下载页面下载
sqldiff 的32位二进制文​​件。可以在相应操作系统sqlite工具 档案中找到它们(请参阅“ 预编译的二进制文件”
部分)。例如,以下是3.31.1版的 sqlite工具 档案的链接:

  • 适用于Linux的SQLite工具
  • 适用于OS X的SQLite工具
  • Windows的SQLite工具

对于3.10.2之前的SQLite版本,SQLite网站托管 sqldiff的 32位二进制文​​件,但没有链接到它们。以下是3.8.10版的
sqldiff 的链接:

  • 适用于Linux的sqldiff
  • 适用于OS X的sqldiff
  • Windows版sqldiff

如果需要64位二进制文​​件,则必须下载原始资源并自己编译它们。(文件
sqldiff.c 位于包含源的归档的 工具 子目录中。)



 类似资料:
  • 问题内容: 我有两个表,想要像这样在sqlite上比较行 我想产生这样的结果 sqlite中的语法如何?谢谢 问题答案:

  • 问题内容: 我必须比较两个对象(不是)。比较它们的规范方法是什么? 我可以想到: 该运营商只比较基准,因此这将仅适用于较低的整数值的工作。但是也许自动装箱开始了…? 这看起来像一个昂贵的操作。是否以此方式计算出哈希码? 有点冗长… 编辑: 谢谢您的答复。尽管我现在知道该怎么办,但事实已分布在所有现有答案(甚至是已删除的答案)上,我也不知道该接受哪个答案。因此,我将接受最佳答案,即所有三种比较可能性

  • 问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我目前正在使用MySQL数据库开发应用程序。 数据库结构仍在不

  • 问题内容: 这是一个简单的问题-给定两个URL,是否有一些内置方法或一个Apache库来确定它们在逻辑上是否相等? 例如,这两个URL相等: 问题答案: 尽管(以及有问题的)这些特定示例 未 返回,但我认为这是唯一可以假定等效的情况(因为HTTP协议中没有空路径)。 这些URI 并且可以 不 被认为是等价的。 也许您可以使用包装在实用程序中的方法来显式处理此特定情况。

  • 问题内容: 如何使用Python比较两个日期以查看稍后的日期? 例如,我想检查当前日期是否超过了我创建的假期日期列表中的最后日期,因此它将自动发送电子邮件,告诉管理员更新holiday.txt文件。 问题答案: 使用方法和运算符及其种类。