使用 Linux,我想比较两个具有相同架构的 SQLite 数据库。只会有一些差异。
有没有可以输出这些差异的工具?最好将它们输出到命令行,以便我可以 grep/sed 它们。
SQLite 使用 SQL,所以一般的 SQL 工具也可以。
原文由 Nicolas Raoul 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Linux,我想比较两个具有相同架构的 SQLite 数据库。只会有一些差异。
有没有可以输出这些差异的工具?最好将它们输出到命令行,以便我可以 grep/sed 它们。
SQLite 使用 SQL,所以一般的 SQL 工具也可以。
原文由 Nicolas Raoul 发布,翻译遵循 CC BY-SA 4.0 许可协议
它仅适用于 Windows,但 Code Project 上有一个免费/开源的 SQLite 数据库比较应用程序:http: //www.codeproject.com/Articles/220018/SQLite-Compare-Utility 对我来说效果很好。
原文由 Matthew Lock 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
请查看 2015 年 5 月 7 日发布的 SQLite Release 3.8.10 。此版本首次包含用于计算两个 SQLite 数据库文件之间差异的 sqldiff.exe 实用程序。该程序很可能也将成为未来版本的一部分。
sqldiff.exe 命令行工具应该适用于所有受支持的操作系统,并提供了几个用于更改其输出行为的开关。示例用法:
如果未指定任何选项,则 sqldiff.exe 的输出是将
database1.sqlite
(“源”数据库)转换为database2.sqlite
(“目标”数据库)的 SQL 语句。但是,也有一定的局限性。例如, sqldiff.exe 实用程序(至少目前)不显示触发器、视图或虚拟表中的差异。
示例命令和输出
我拿了一个简单的键值存储数据库(
db1.sqlite
)并制作了一个副本(db2.sqlite
)。然后我将一个键值对插入db2.sqlite
。之后我运行以下命令:并得到以下输出:
将键值对插入到
my_table
后,表my_table_size
由 TRIGGER 自动更新。然后我再次运行 sqldiff.exe ,但这次使用db2.sqlite
作为第一个参数,db1.sqlite
作为第二个参数:并得到以下输出:
sqldiff 下载链接
自 2016 年 1 月 20 日发布的 SQLite 版本 3.10.2 起, sqldiff 的 32 位二进制文件可以直接从 SQLite 下载页面下载。它们可以在相应操作系统的 sqlite 工具 档案中找到(请参阅 预编译二进制文件 部分)。例如,这里是 3.39.3 版本的 sqlite 工具 档案的链接:
对于版本 3.10.2 之前的 SQLite 版本,SQLite 网站托管 sqldiff 的 32 位二进制文件,但不链接到它们。以下是 3.8.10 版 sqldiff 的链接:
如果您需要 64 位二进制文件,则必须 下载 原始源代码并自行编译。 (文件 sqldiff.c 位于包含源文件的 工具 子目录中。)