【问题标题】:Best way of updating a table with SSIS using a OLE DB Command使用 OLE DB 命令通过 SSIS 更新表的最佳方法
【发布时间】:2015-01-30 02:48:29
【问题描述】:

我有下一个问题

insert into tabla_A (value_1, value_2, value_3)
select table_B.value_1, table_B.value_2, table_B.value_3
from tabla_A right join (table_C left join table_D on table_C.value1 = table_D.value1)
on table_A.value_1 = table_B.value_1
where table_A is null

如您所见,我在这个查询中有几个表,问题是table_B、table_C、table_D属于一个Oracle数据库,而Table_A位于一个SQL服务器中。

你觉得面对这个查询最好的方法是什么?我的意思是使用较少数量的合并连接任务,并使用更多的 SQL 语句。还要考虑到源和目标是相同的(table_A)

【问题讨论】:

  • 是否可以从 oracle 中提取您需要的值并将它们存储在 sql server 上的临时表中?然后你可以按照你的方式执行上面的语句。这样,您就可以避免合并连接或使用链接服务器。
  • 嗨。这就是问题所在,我无法创建任何临时表

标签: sql-server oracle ssis updates


【解决方案1】:

最好的解决方案介于两者之间。如果您的表不是那么大并且您的 Oracle 服务器不忙于其他任务,最好将单个 A 表传输到它并在那里执行查询(假设您的 DW 也在 Oracle 上)如果您有巨大的表加入并且您的 SSIS 服务器有足够的 RAM 来处理没有磁盘缓存的连接(这可以通过数据流缓冲区大小进行调整),那么您应该在服务器上执行中间连接,并且在 SSIS 服务器上执行最难的连接。 另外,你应该避免使用

insert into...

在 SSIS 解决方案中,因为您有它的 insert bulk 作弊。使用 oledb/odbc 目的地!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多