首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示忽略rowid的两个SQLite数据库的差异

问显示忽略rowid的两个SQLite数据库的差异
EN

Stack Overflow用户
提问于 2021-12-23 09:31:24
回答 1查看 82关注 0票数 1

首先,我创建了一个包含两个记录的表:

代码语言:javascript
复制
C:\Software\sqlite-tools-win32-x86-3360000>sqlite3.exe
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open test.db
sqlite> CREATE TABLE people(first_name TEXT, last_name TEXT, PRIMARY KEY([first_name], [last_name]));
sqlite> INSERT INTO people(first_name, last_name) VALUES ("John", "Doe");
sqlite> INSERT INTO people(first_name, last_name) VALUES ("Jane", "Doe");
sqlite> .quit

然后我复制了数据库并检查它们是否相等:

代码语言:javascript
复制
C:\Software\sqlite-tools-win32-x86-3360000>copy test.db test2.db
        1 file(s) copied.

C:\Software\sqlite-tools-win32-x86-3360000>sqldiff.exe test.db test2.db

C:\Software\sqlite-tools-win32-x86-3360000>

然后,我删除了第一个记录,并再次添加了该记录:

代码语言:javascript
复制
C:\Software\sqlite-tools-win32-x86-3360000>sqlite3.exe
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open test2.db
sqlite> DELETE FROM people WHERE first_name = 'John' AND last_name = 'Doe';
sqlite> INSERT INTO people(first_name, last_name) VALUES ("John", "Doe");
sqlite> .quit

之后,我再次比较了这两个数据库:

代码语言:javascript
复制
C:\Software\sqlite-tools-win32-x86-3360000>sqldiff.exe test.db test2.db
DELETE FROM people WHERE rowid=1;
INSERT INTO people(rowid,first_name,last_name) VALUES(3,'John','Doe');

C:\Software\sqlite-tools-win32-x86-3360000>

我理解输出,因为唱片“约翰”的“无名氏”是不同的。

然而,我并不关心我的使用程序中的rowid。

如果可以查询的数据是相等的,那么如何才能看到被认为相等的两个数据库/表的差异?

换句话说,只要除了rowid以外的所有值都是相同的,那么两个记录就应该被认为是相等的。

EN

回答 1

Stack Overflow用户

发布于 2022-02-19 11:05:01

如果使用第三方工具是可以接受的,我可以建议使用用于SQLite的KS合并。它通过主键而不是rowid来比较数据。提供免费版本,以下是免费版本的截图:

任何更改都将突出显示。它对表和PK中的列数有一些限制,但支持两列键。我是那个工具的作者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70460111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档