使用C#将数据从一个oracle数据库复制到另一个oracle数据库

时间:2011-02-22 19:00:33

标签: c# performance oracle copying

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

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

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

1 个答案:

答案 0 :(得分:1)

我曾经这样做的一种方法是在源数据库上使用DataReader,只在目标数据库上执行插入(确保使用Bind Parameters)。

请注意,DataReader非常适合在表中移动时不占用大量内存(我相信默认情况下它使用快进,只读游标)。这意味着在给定时间内只有少量数据保存在内存中。

以下是需要注意的事项:

<强>关系

如果您正在使用具有关系的数据,那么您将需要处理这些问题。我有两种方法可以解决这个问题:

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

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

    <强>交易

    如果您要移动大量数据,交易将会很昂贵。

    重复性/删除目标数据

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

    平台特定方法

    在SQL Server中,有一些方法可以执行非常快速的批量插入(通过放弃引用完整性检查等少量内容)。 Oracle工具集中可能有类似的功能。

    表/列元数据

    我还没有在Oracle中这样做,但看起来您可以使用here提到的视图获取表和列的元数据。