将数据从一个 oracle 数据库复制到另一个的标准方法是什么。
1)使用配置从源表读取数据并复制到目标上的临时表(即有超过1个表,每个表都有单独的临时表)2)目前没有clob数据,但将来可能会使用clob数据. 3)将所有内容读入内存(如果大数据以块形式读取)
不应使用 Oracle 链接 不应使用文件 代码应仅使用 C# 而不是任何数据库过程。
将数据从一个 oracle 数据库复制到另一个的标准方法是什么。
1)使用配置从源表读取数据并复制到目标上的临时表(即有超过1个表,每个表都有单独的临时表)2)目前没有clob数据,但将来可能会使用clob数据. 3)将所有内容读入内存(如果大数据以块形式读取)
不应使用 Oracle 链接 不应使用文件 代码应仅使用 C# 而不是任何数据库过程。
我曾经这样做的一种方法是在源数据库上使用 DataReader 并在目标数据库上执行插入(肯定使用绑定参数)。
请注意,DataReader 在通过表移动时不会使用太多内存(我相信默认情况下它使用快进、只读游标)。这意味着在给定时间只有少量数据保存在内存中。
以下是需要注意的事项:
关系
如果您正在处理具有关系的数据,您将需要处理它。我见过两种方法来处理这个问题:
自动生成的 ID 值
这些列通常通过禁用给定表的自动增量功能并允许身份插入来处理(我使用了一些 SQL Server 术语,我不记得它在 Oracle 上是如何工作的)。
交易
如果您要移动大量数据,则交易成本会很高。
重复性/删除目标数据
除非你比我们其他人更厉害,否则你可能不得不多次运行这个东西(至少在开发过程中)。这意味着您可能需要一种删除目标数据的方法。
平台特定方法
在 SQL Server 中,有一些方法可以非常快地执行批量插入(通过放弃像参照完整性检查这样的小事情)。Oracle 工具集中可能有类似的特性。
表/列元数据
我还没有在 Oracle 中执行此操作,但看起来您可以使用此处提到的视图获取表和列的元数据。