【问题标题】:Load data from one oracle db to another oracle db best practices/methods将数据从一个 oracle db 加载到另一个 oracle db 最佳实践/方法
【发布时间】:2012-02-19 22:36:20
【问题描述】:

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

【问题讨论】:

    标签: database oracle design-patterns architecture


    【解决方案1】:

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

    如果您在目标数据库上创建指向源数据库的数据库链接,则可以将您的 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>>
    

    【讨论】:

    • 谢谢,为什么我不能直接加载我不想创建源表和列,我在目的地有不同的表结构,它们与源表和列不同。由于它是一次性数据加载,在这种情况下是否值得使用 ETL?我知道 SQL、PL/SQL。我是 ETL 新手,请建议。
    • @balu - 我仍然不确定我是否理解问题所在。您可以在 SQL 和/或 PL/SQL 中实现 ETL(仅代表 Extract Transform Load)逻辑。我发布了一个从源系统中的两个表直接加载到目标系统中的单个表的示例。无需在目标数据库中创建源表。
    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多