【问题标题】:MERGE statement in Oracle and SQL ServerOracle 和 SQL Server 中的 MERGE 语句
【发布时间】:2016-01-04 19:04:51
【问题描述】:

我想在 SSIS 中使用合并语句。我有一个源 (Oracle) 和一个目标 (SQL Server)。表格和结构都相同。

我需要根据某些日期条件插入、更新和删除数据。我的问题是我应该使用 Merge Join 还是 Lookup Table,因为我在 Oracle 中有超过 4000 万条记录。

如果需要更多说明,请告诉我。我将为您提供更多信息。我不擅长发帖,请见谅。

【问题讨论】:

  • SQL Server 中有多少条记录?计算需要 Oracle 中的多少列数据?
  • 在 Sql Server 中,过去 1 年大约有 400 万条记录和 56 列。在 Oracle 中有超过 150 列没有索引。
  • 您需要 Oracle 中的所有列进行计算吗?
  • 没有计算.. 只是使用基于日期标准的合并语句将数据从 Oracle 复制到 Sql Server。从 2015 年 1 月 1 日到 2015 年 12 月 31 日。如果数据不可用,则插入,如果有任何更改,则更新,否则从目标表中删除
  • 我相信这可以帮助你stackoverflow.com/questions/24488779/…

标签: sql-server oracle ssis merge


【解决方案1】:

我个人会将 oracle 表传输到 SQL Server 并在本地执行任何操作。我几乎总是使用这种方法(与您的数据大小无关),但在处理基于云的数据库(延迟等)时它也很有用。值得注意的是,如果您的源代码中没有日期时间列,您可以使用 ORA_ROWSCN 伪列,它为您提供了一个粗略的更改集以在本地加载。

我已经阅读了很多关于 Merge join 不执行准确连接的故事 - 我预计对于您大小的数据,这可能是一个问题。

查找也可能是一个问题,因为它必须缓存所有内容(这会尝试将所有 oracle 记录加载到 SSIS 中,因此最好在本地传输它)。

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2015-10-30
    • 2020-10-13
    • 2011-02-26
    相关资源
    最近更新 更多