【问题标题】:Execute Oracle 11g function from SQL Server with result insert into SQL table从 SQL Server 执行 Oracle 11g 函数并将结果插入 SQL 表
【发布时间】:2020-06-21 15:24:31
【问题描述】:

我有一个 SSIS 包,它从 SQL 表中查询数据(使用 SQL 任务工具)并将其输出传递到 ForEach 循环容器,该容器将值插入到查询变量中。容器内是另一个带有 Oracle 连接的 SQL 任务,用于在 Oracle 中使用查询执行函数。尽管包运行得很慢,但它仍然会产生结果。但是,在将结果放入 SQL 表时,我需要帮助。

此外,如果有更好的优化包的方法,请告诉我。

提前谢谢你。

【问题讨论】:

    标签: sql-server oracle ssis


    【解决方案1】:

    我的建议是更改 SSIS 包内的查询,以便插入 1000 x 1000 而不是 1 x 1。您可以考虑性能结果来使用数字。

    INSERT ALL
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
      INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
      ...
    SELECT * FROM dual
    

    【讨论】:

    • 感谢@KOBER 的回复。坦率地说,我是 SSIS 的新手,所以不确定我能理解你的建议。我把你推荐的查询放在哪里?第一个 SQL 任务具有来自 SQL 查询的完整结果集,该结果用作构建查询表达式的一部分。循环中的第二个 SQL 任务是采用该查询表达式并执行 Oracle 11g 函数,因此使用 Oracle 连接。
    • 嗨,Kamrul,您可以考虑一个 变量,您可以在其中存储脚本的动态部分,在循环期间您需要为范围实现逻辑(IF 1. ..1000 然后任务将被执行),作为第二种选择,您可以写入 temp 文件 整个查询 cos 是本地的会更快,最后将其添加到第二个任务中
    • 嗨@KOBER。它运行缓慢的原因是由于 SSIS 包的配置不正确。我在变量上配置了一个表达式,而在表达式任务工具上也配置了相同的变量表达式。这会导致我每次点击表达式工具时速度变慢甚至挂起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2016-11-28
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多