繁体   English   中英

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

[英]Copying data from one oracle database to another oracle database using C#

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

1)从源表读取数据并使用配置复制到目标位置的临时表(即,有多个表,每个表具有单独的临时表)2)目前没有Clob数据,但将来可能会使用Clob数据。 3)将所有内容读取到内存中(如果大数据块读取)

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

我常用的一种方法是在源数据库上使用DataReader,然后仅在目标数据库上执行插入操作(一定要使用Bind Parameters )。

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

以下是需要注意的事项:

人际关系

如果您使用的是具有关系的数据,则需要进行处理。 我已经看到有两种方法可以解决此问题:

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

自动产生的ID值

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

交易次数

如果您要移动大量数据,则交易将非常昂贵。

重复性/删除目标数据

除非您比我们其他人更出色,否则您可能必须多次运行此程序(至少在开发过程中)。 这意味着您可能想要一种删除目标数据的方法。

平台特定方法

在SQL Server中,有许多方法可以执行快速的批量插入(通过放弃诸如引用完整性检查之类的小事情)。 Oracle工具集中可能有类似的功能。

表/列元数据

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM