将数据从一个oracle数据库复制到另一个oracle数据库的标准方法是什么。
1)从源表读取数据并使用配置复制到目标上的临时表(即,有多个表,每个表都有单独的临时表) 2)现在没有clob数据,但是将来可能会使用clob数据。 3)读取内存中的所有内容(如果以块的形式读取大数据)
不应使用Oracle链接 不应该使用文件 代码应该只使用C#而不是任何数据库程序。
答案 0 :(得分:1)
我曾经这样做的一种方法是在源数据库上使用DataReader,只在目标数据库上执行插入(确保使用Bind Parameters)。
请注意,DataReader非常适合在表中移动时不占用大量内存(我相信默认情况下它使用快进,只读游标)。这意味着在给定时间内只有少量数据保存在内存中。
以下是需要注意的事项:
<强>关系强>
如果您正在使用具有关系的数据,那么您将需要处理这些问题。我有两种方法可以解决这个问题:
自动生成的ID值
这些列通常通过禁用给定表的自动增量功能并允许身份插入(我使用一些SQL Server术语,我不记得它在Oracle上如何工作)来处理。
<强>交易强>
如果您要移动大量数据,交易将会很昂贵。
重复性/删除目标数据
除非你比我们其他人更令人敬畏,否则你可能不得不多次运行这件事(至少在开发过程中)。这意味着您可能想要一种删除目标数据的方法。
平台特定方法
在SQL Server中,有一些方法可以执行非常快速的批量插入(通过放弃引用完整性检查等少量内容)。 Oracle工具集中可能有类似的功能。
表/列元数据
我还没有在Oracle中这样做,但看起来您可以使用here提到的视图获取表和列的元数据。