【发布时间】:2013-11-14 03:14:21
【问题描述】:
我有两个 SQLite 数据库,它们都有连接表来描述 一对多 关系。现在这两个数据库需要通过某种导入/导出机制合并为一个数据库,并且仍然保持关系。
我尝试使用.dump 转储DB2,然后使用.read 将其加载回DB1,但总是收到PRIMARY KEY must be unique 警告。
是否有任何最佳实践来处理这种情况?
最好不要使用attach 以避免额外的复杂性。
DB1
水果
-------------- |编号 |姓名 | -------------- | 1 |苹果 | | 2 |柠檬 | | 3 |猕猴桃 | --------------果汁
---------------- |编号 |姓名 | ---------------- | 1 |果汁A | | 2 |果汁B | ----------------配方(连接表)
---------------------------- |编号 |果汁_id |水果ID | ---------------------------- | 1 | 1 | 1 | | 2 | 1 | 2 | | 3 | 2 | 1 | | 4 | 2 | 3 | ----------------------------DB2
水果
--------------- |编号 |姓名 | --------------- | 1 |猕猴桃 | | 2 |柠檬 | | 3 |苹果 | | 4 |橙色 | ---------------果汁
---------------- |编号 |姓名 | ---------------- | 1 |果汁C | | 2 |果汁D | ----------------配方(连接表)
---------------------------- |编号 |果汁_id |水果ID | ---------------------------- | 1 | 1 | 1 | | 2 | 1 | 3 | | 3 | 2 | 2 | | 4 | 2 | 4 | ----------------------------【问题讨论】:
-
names 是否唯一,合并后它们是否应该保持唯一? -
如果
ATTACH的复杂性更少,您愿意使用它吗? -
name可以是唯一的,也可以不是唯一的,重要的是保持联结表的关系并解决主键冲突问题。对我来说使用attach就像操作两个子数据库而不是一个子数据库。欢迎提出任何建议。 -
那么你可以吃两种不同的水果“苹果”吗?
-
是的,我没关系。