合并两个都有联结表的SQLite数据库
我有两个SQLite数据库,两个数据库都有连接表来描述 一对多
关系。现在,需要使用某种导入/导出机制将这两个数据库合并到一个数据库中,并且仍然保持关系。
我尝试使用来转储 DB2 ,.dump
然后使用来将其重新加载到 DB1 中.read
,但始终收到PRIMARY KEY mustbe unique
警告。
是否有最佳实践来处理这种情况?
最好不要使用attach
以避免额外的复杂性。
DB1
Fruit
--------------
| id | name |
--------------
| 1 | Apple |
| 2 | Lemon |
| 3 | Kiwi |
果汁
----------------
| id | 名称|
----------------
| 1 | JuiceA |
| 2 | JuiceB |
----------------
配方(连接表)
----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 3 |
----------------------------
DB2
Fruit
---------------
| id | name |
---------------
| 1 | Kiwi |
| 2 | Lemon |
| 3 | Apple |
| 4 | Orange |
Juice
----------------
| id | 名称|
----------------
| 1 | JuiceC |
| 2 | JuiceD |
----------------
配方(连接表)
----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 3 |
| 3 | 2 | 2 |
| 4 | 2 | 4 |
----------------------------
-
如果您不关心重复项,则可以从DB1获得最大的ID,并将其添加到DB2中的每个ID。但是,您说的
name
可能是唯一的,所以让我们做对吧。我假设所有
id
列都是INTEGER PRIMARY KEY
,即自动递增。打开DB1,并附加DB2:
ATTACH '...' AS db2;
复制DB1中尚不存在的所有水果和果汁(这些将获得新的ID):
INSERT INTO Fruit(name) SELECT name FROM db2.Fruit WHERE name NOT IN (SELECT name FROM Fruit); INSERT INTO Juice(name) SELECT name FROM db2.Juice WHERE name NOT IN (SELECT name FROM Juice);
现在,复制配方,同时通过相应的名称查找新的ID值:
INSERT INTO Recipe(juice_id, fruit_id) SELECT (SELECT id FROM Juice WHERE name = (SELECT name FROM db2.Juice WHERE id = Recipe2.juice_id)), (SELECT id FROM Fruit WHERE name = (SELECT name FROM db2.Fruit WHERE id = Recipe2.fruit_id)) FROM db2.Recipe AS Recipe2;
-
如何在Linux上比较两个SQLite数据库
2021-02-01 关注 0 浏览118 1答案
-
在不同数据库上联接两个表
2021-07-06 关注 0 浏览98 1答案
-
在sqlite3中合并两个表
2021-06-04 关注 0 浏览93 1答案
-
在两个不同数据库中的表之间联接?
2021-02-02 关注 0 浏览100 1答案
-
创建SQLite数据库和表
2021-02-02 关注 0 浏览132 1答案
-
Sqlite将具有唯一值的数据库合并到一个数据库中,从而保留前向键关系
2021-04-20 关注 0 浏览61 1答案
-
比较两个 MySQL 数据库
2022-04-11 关注 0 浏览62 1答案
-
搜索Sqlite数据库-所有表和列
2021-01-29 关注 0 浏览98 1答案
-
删除后同步两个数据库表中的数据
2021-03-12 关注 0 浏览66 1答案
-
通过jsp页面将表单数据插入数据库中的两个不同表中
2021-02-01 关注 0 浏览97 1答案