我想比较2个SQLite数据库,以检查它是否需要在客户端计算机上更新。
我不太确定应该怎么做。我是否应该创建内部版本ID或比较文件大小(这可能不是一个好主意,因为我认为文件大小在我编辑数据库时不会改变)。
有人知道做我需要做的事情的好方法吗?
谢谢你!
您可以尝试使用 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)
希望这可以帮助!
原始问题有点晚了,但可能对其他人有帮助。
在 Windows 上,您可以使用KS DB Merge Tools for SQLite。我是这个工具的作者。比较数据库对象定义和数据。提供免费版本,功能非常强大,可满足差异/比较需求。
编辑 2022-06-29 我已经制作了该工具的基于 Web wasm 的仅 diff 版本: https: //ksdbmerge.tools/for-sqlite-online
编辑 2022-02-21:接受的 .dump 答案在许多情况下都很好,但它可能会报告误报更改。这是这个问题的转储结果:
这两列都是主键的一部分,因此从数据模型的角度来看,数据是相同的,但转储是不同的。我的工具使用主键来比较数据,因此在这种情况下不会报告任何更改。
| 归档时间: |
|
| 查看次数: |
7436 次 |
| 最近记录: |