2011-02-22 69 views
0

将数据从一个oracle数据库复制到另一个数据库的标准方式是什么?使用C#将数据从一个oracle数据库复制到另一个oracle数据库

1)使用配置从源表中读取数据并将其复制到目标的临时表(即,有多个表并且每个表具有单独的临时表) 2)目前没有clob数据,但是在将来可能会使用clob数据。 3)阅读一切内存(如果成批读大数据)

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

+0

投票结束的理由是,通过排除明显的数据库链接,数据库程序和文件传输机制,该解决方案只会对那些真正喜欢重新发明车轮的人有所帮助。 – 2011-02-23 09:02:18

+0

@Gary它是公司的标准程序,在生产数据库之间不存在任何数据库链接。因此我们假设使用Middle-Tier应用程序。我认为我们可以导出到文件,然后读取文件并写入数据库,但是当我们只想从源表读取数据并写入目标表时,这会更有用。 – 2011-02-23 20:51:52

回答

1

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

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

下面是需要提防的事情:

关系

如果你使用具有关系数据的工作,你将需要面对这一切。有两种方法可以解决这个问题:

  1. 在复制之前临时删除目标数据库中的关系,然后重新创建它们。
  2. 复制按照正确的顺序的关系正常工作的数据(这通常是很困难/低效)

自动生成的ID值

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

交易

如果你正在移动大量的数据,交易将是昂贵的。

重复性/删除目标数据

除非你比我们的休息方式更真棒,你可能必须(在开发过程中至少)运行这个事情不止一次。这意味着您可能需要一种方法来删除目标数据。

平台特定方法

在SQL Server中,有一些方法可以执行批量插入是极快的(通过放弃像参照完整性检查的小东西)。 Oracle工具集中可能有类似的功能。

表/列元

我还没有做到这一点在甲骨文还,但它看起来像您可以使用该意见提到here表和列获取元数据。

相关问题