将数据从一个oracle db加载到另一个oracle db最佳实践/方法

时间:2012-01-26 20:25:30

标签: database oracle design-patterns architecture

我想从一个源Oracle db到目标oracle db进行一次性加载。 它不能直接加载/卸载或导入/导出数据,因为它在源和目标的不同表结构列。所以它需要良好的转型, 我的计划是从源数据库获取XML格式的数据,并将XML处理到目标数据库。 并且数据量会更多(在某些表中有1到20多万条记录或更多),所涉及的数据库是:Oracle(源)和Oracle(目标), 请提供一些最佳实践或最佳方法。

1 个答案:

答案 0 :(得分:2)

我不确定我理解为什么你不能直接加载。

如果在目标数据库上创建指向源数据库的数据库链接,则可以将ETL逻辑放入从源数据库SELECTINSERT到目标数据库的SQL语句中。这避免了将数据写入平面文件,读取该平面文件,解析XML等的需要,这将是缓慢的并且需要大量的编码。这样,您可以专注于ETL逻辑,并且可以尽可能有效地迁移数据。

您可以编写直接从旧数据库上的旧表结构加载到新数据库上的新表结构的SQL(或PL / SQL)。

INSERT INTO new_table( <<list of columns>> )
  SELECT a.col1, a.col2, ... , b.colN, b.colN+1
    FROM old_table_1@link_to_source a,
         old_table_2@link_to_source b
   WHERE <<some join condition>>