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



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

我不确定我是否理解为什么不能进行直接加载。

如果在目标数据库上创建一个指向源数据库的数据库链接,则可以将ETL逻辑放入SQL语句中,这些语句将SELECT从源数据库中INSERT放入目标数据库。这就避免了将数据写入一个平面文件、读取该平面文件、解析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>>

最新更新