|
|
1
3
概述 我将给出四个解决方案,从最简单的开始。对于每个解决方案,我将解释其适用的情况。 这些解决方案都假设数据库A和B具有以下表格:
解决方案1 这是最简单的解决办法。应在以下情况下使用:
以下内容将把A中的所有术语和关系合并到B中:
解决方案2 这是下一个最简单的解决方案。应在以下情况下使用:
首先在术语表中添加一个名为“OldID”的int列,然后使用以下命令将所有术语和关系从A合并到B:
此解决方案使用迭代。应在以下情况下使用:
以下内容将把A中的所有术语和关系合并到B中:
此解决方案是特定于Oracle的,需要您知道用于生成ID值的顺序,并且效率低于其他一些解决方案。应在以下情况下使用:
以下内容将把A中的所有术语和关系合并到B中:
|
|
2
5
快速回答 导入到临时表中,但填充映射的ID值 用于从目标表生成ID值。这可以保证避免ID值之间的冲突,因为DBMS引擎支持对序列的并发访问。 当节点上的ID值已映射(请参见下文)时,重新映射边的ID值非常简单。
您需要一种机制来映射源中的旧键和目标中的新键之间的值。实现这一点的方法是创建包含新旧KAY之间映射的中间暂存表。 在Oracle中,自动递增键通常以您描述的方式使用序列来完成。您需要使用“old”键的占位符来构造临时表,以便可以重新映射。使用与应用程序用于填充实际目标数据库表上的ID值相同的顺序。DBMS允许对序列进行并发访问,并且使用相同的序列可以保证在映射的ID值中不会发生冲突。 如果您的模式类似于:
这将允许您导入到
一旦在暂存表中有了此映射,边缘表中的ID值就可以通过以下查询进行计算:
可以使用具有类似联接的更新查询将映射的边缘值填充回暂存表,也可以从类似于上述查询的查询直接插入到目标表中。 |
|
3
0
我过去经常做这种事,但我的记忆有点模糊。我会给你一个大概的想法,希望它能为你指明正确的方向。 基本上,只有在“parent”表中有可靠的第二个“unique key”列时,才能执行此操作。如果没有,则需要创建一个。 假设我们有这些桌子
您要做的是首先将项目从SOURCEDB复制到TARGETDB,让TARGETDB为id列创建自己的值。
您需要对idchild列执行相同的操作。
我假设这两个数据库足够“连接”,可以进行跨数据库查询。如果您必须序列化到文件,它会得到更多。。。复杂。 |
|
|
4
0
您可以使用目标数据库中的临时表来实现所需的功能。 由于ID是自动生成的,下面的代码不会生成任何冲突。
我假设源数据库名为SourceDb,目标数据库名为TargetDb。
我还要假设这个表结构:
使用以下结构在TargetDb中创建临时表:
下面的代码将您的子树复制到目标数据库。
|
|
|
5
0
如何将数据作为XML传递?它自然地被设计为使用树结构,并且许多DBMS包括对XML解析和转换的良好支持。 您必须确保DB1中的节点X映射到DB 2中的节点Y,但为此,您应该在主键之外使用关于节点的一些事实(名称等)。 您还可以将每个DB的键偏移常规量(例如2^32),并使用大整数键。将条目限制为2^32,但仍然有用。
|
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
|
Dante · Django::配置不当:池不支持持久连接 1 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |