比较 2 个 SQLite 数据库

Mai*_*lde 5 sqlite

我想比较2个SQLite数据库,以检查它是否需要在客户端计算机上更新。

我不太确定应该怎么做。我是否应该创建内部版本ID或比较文件大小(这可能不是一个好主意,因为我认为文件大小在我编辑数据库时不会改变)。

有人知道做我需要做的事情的好方法吗?

谢谢你!

Cas*_*lia 8

您可以尝试使用 SQLite 的命令转储.dump每个 SQLite 数据库:

$ sqlite3 /path/to/database1 .dump > database1.sql
$ sqlite3 /path/to/database2 .dump > database2.sql
Run Code Online (Sandbox Code Playgroud)

然后比较生成的文件。如果您的两个数据库非常相似,那么一个简单的方法diff可能可以显示任何差异,例如

$ diff -u database1.sql database2.sql
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


sar*_*arh 6

原始问题有点晚了,但可能对其他人有帮助。

在 Windows 上,您可以使用KS DB Merge Tools for SQLite。我是这个工具的作者。比较数据库对象定义和数据。提供免费版本,功能非常强大,可满足差异/比较需求。

编辑 2022-06-29 我已经制作了该工具的基于 Web wasm 的仅 diff 版本: https: //ksdbmerge.tools/for-sqlite-online

编辑 2022-02-21:接受的 .dump 答案在许多情况下都很好,但它可能会报告误报更改。这是这个问题的转储结果: 在此输入图像描述 这两列都是主键的一部分,因此从数据模型的角度来看,数据是相同的,但转储是不同的。我的工具使用主键来比较数据,因此在这种情况下不会报告任何更改。