请查看2015年5月7日发布的
SQLite Release 3.8.10.此版本首次包含用于计算两个SQLite数据库文件之间差异的
sqldiff.exe utility program.该程序很可能也将成为未来版本的一部分.
sqldiff.exe命令行工具应适用于所有受支持的操作系统,并提供多个用于更改其输出行为的开关.用法示例:
sqldiff [options] database1.sqlite database2.sqlite
如果未指定任何选项,则sqldiff.exe的输出是SQL语句,它将database1.sqlite(“源”数据库)转换为database2.sqlite(“目标”数据库).
但是,也有一些限制.例如,sqldiff.exe实用程序(至少当前)不显示TRIGGER,VIEW或虚拟表中的差异.
示例命令和输出
我拿了一个简单的键值存储数据库(db1.sqlite)并制作完成
它的副本(db2.sqlite).然后我插入一个键值对
db2.sqlite.之后我运行了以下命令:
sqldiff db1.sqlite db2.sqlite
得到以下输出:
INSERT INTO my_table(rowid,”key”,value) VALUES(1,’D:\Test\Test.txt’,x’aabbccdd’);
UPDATE my_table_size SET counter=1 WHERE rowid=1;
将键值对插入my_table后,表格my_table_size由TRIGGER自动更新.然后我再次运行sqldiff.exe,但这次使用db2.sqlite作为第一个参数,db1.sqlite作为第二个参数:
sqldiff db2.sqlite db1.sqlite
得到以下输出:
DELETE FROM my_table WHERE rowid=1;
UPDATE my_table_size SET counter=0 WHERE rowid=1;
sqldiff下载链接
从2016年1月20日发布的SQLite version 3.10.2开始,sqldiff的32位二进制文件可以直接从SQLite Download Page下载.可以在相应操作系统的sqlite工具存档中找到它们(请参阅预编译的二进制文件部分).例如,以下是版本3.24.0的sqlite工具存档的链接:
对于版本3.10.2之前的SQLite版本,SQLite网站承载sqldiff的32位二进制文件,但不链接到它们.以下是版本3.8.10的sqldiff的链接:
如果你需要64位二进制文件,那么你需要download原始资源并自己编译它们. (文件sqldiff.c位于包含源的归档的工具子目录中.)