我想比较2 SQLite数据库,以检查是否需要在客户端计算机上更新。我真的不知道我应该怎么做。我应该做一个内部版本ID还是比较文件大小(这可能不是一个好主意,因为我认为文件大小不会在我编辑数据库的任何时候改变)。有人知道我该怎么做吗?谢谢大家!
3xiyfsfu1#
您可以尝试使用SQLite的.dump命令 * 转储 * 每个SQLite数据库:
.dump
$ sqlite3 /path/to/database1 .dump > database1.sql $ sqlite3 /path/to/database2 .dump > database2.sql
然后比较生成的文件。如果您的两个数据库非常相似,一个简单的diff可能会显示任何差异,* 例如 *:
diff
$ diff -u database1.sql database2.sql
希望这有帮助!
g2ieeal72#
对于最初的问题有点晚,但可能对其他人有帮助。在Windows上你可以使用KS DB Merge Tools for SQLite。我是这个工具的作者。比较DB对象定义和数据。免费版本可用,功能很好,适合比较/比较的需要。EDIT 2022-06-29我已经制作了这个工具的基于web wasm的只区分版本:https://ksdbmerge.tools/for-sqlite-online编辑日期:2022年2月21日:接受。dump答案适用于许多情况,但可能报告误报更改。以下是this问题的转储结果:x1c 0d1x两列都是主键的一部分,因此从数据模型的Angular 来看,数据是相同的,但转储是不同的。我的工具使用主键来比较数据,因此在这种情况下不会报告任何更改。
ux6nzvsh3#
您可以使用sqldiff。在Debian或基于Debian的系统(可能还有其他Linux系统)上,安装sqlite3时会默认安装它:apt install sqlite3在MacOS上,可以使用Homebrew:brew install sqldiff
apt install sqlite3
brew install sqldiff
3条答案
按热度按时间3xiyfsfu1#
您可以尝试使用SQLite的
.dump
命令 * 转储 * 每个SQLite数据库:然后比较生成的文件。如果您的两个数据库非常相似,一个简单的
diff
可能会显示任何差异,* 例如 *:希望这有帮助!
g2ieeal72#
对于最初的问题有点晚,但可能对其他人有帮助。
在Windows上你可以使用KS DB Merge Tools for SQLite。我是这个工具的作者。比较DB对象定义和数据。免费版本可用,功能很好,适合比较/比较的需要。
EDIT 2022-06-29我已经制作了这个工具的基于web wasm的只区分版本:https://ksdbmerge.tools/for-sqlite-online
编辑日期:2022年2月21日:接受。dump答案适用于许多情况,但可能报告误报更改。以下是this问题的转储结果:x1c 0d1x两列都是主键的一部分,因此从数据模型的Angular 来看,数据是相同的,但转储是不同的。我的工具使用主键来比较数据,因此在这种情况下不会报告任何更改。
ux6nzvsh3#
您可以使用sqldiff。
在Debian或基于Debian的系统(可能还有其他Linux系统)上,安装sqlite3时会默认安装它:
apt install sqlite3
在MacOS上,可以使用Homebrew:
brew install sqldiff