0

将数据从一个 oracle 数据库复制到另一个的标准方法是什么。

1)使用配置从源表读取数据并复制到目标上的临时表(即有超过1个表,每个表都有单独的临时表)2)目前没有clob数据,但将来可能会使用clob数据. 3)将所有内容读入内存(如果大数据以块形式读取)

不应使用 Oracle 链接 不应使用文件 代码应仅使用 C# 而不是任何数据库过程。

4

1 回答 1

1

我曾经这样做的一种方法是在源数据库上使用 DataReader 并在目标数据库上执行插入(肯定使用绑定参数)。

请注意,DataReader 在通过表移动时不会使用太多内存(我相信默认情况下它使用快进、只读游标)。这意味着在给定时间只有少量数据保存在内存中。

以下是需要注意的事项:

关系

如果您正在处理具有关系的数据,您将需要处理它。我见过两种方法来处理这个问题:

  1. 在进行复制之前暂时删除目标数据库中的关系,然后在之后重新创建它们。
  2. 以正确的顺序复制数据以使关系正常工作(这通常非常困难/效率低下)

自动生成的 ID 值

这些列通常通过禁用给定表的自动增量功能并允许身份插入来处理(我使用了一些 SQL Server 术语,我不记得它在 Oracle 上是如何工作的)。

交易

如果您要移动大量数据,则交易成本会很高。

重复性/删除目标数据

除非你比我们其他人更厉害,否则你可能不得不多次运行这个东西(至少在开发过程中)。这意味着您可能需要一种删除目标数据的方法。

平台特定方法

在 SQL Server 中,有一些方法可以非常快地执行批量插入(通过放弃像参照完整性检查这样的小事情)。Oracle 工具集中可能有类似的特性。

表/列元数据

我还没有在 Oracle 中执行此操作,但看起来您可以使用此处提到的视图获取表和列的元数据。

于 2011-02-22T19:43:55.407 回答