SSIS 数据流,忽略 SQL 语句中的 where 子句
Posted
技术标签:
【中文标题】SSIS 数据流,忽略 SQL 语句中的 where 子句【英文标题】:SSIS Data Flow, ignoring where clause in SQL Statement 【发布时间】:2019-02-01 14:47:49 【问题描述】:使用 Visual Studio 2017 和 SSIS。
从 Oracle 到 SQL Server 的基本数据流。
Oracle 是源 (OLEDB),SQL Server 是目标(OLEDB 也是)。
我正在使用的 SQL 命令
SELECT * FROM CASE_NOTE WHERE
CREATE_DT <= '31-DEC-2010 00.00.00'
但是,数据流忽略 WHERE 并迁移所有行。
此外,数据流将显示 150 万行,其中 750,000 行已提交(源只有 750,000 行)。
这是一种奇怪的行为,我无法找出问题所在。
我尝试过从 OLEDB 转到 ADO.NET 并得到相同的结果。
我已删除 where 子句,但数据流中的 2x 行仍然存在
【问题讨论】:
【参考方案1】:解析字符串到日期的问题?
你可以试试这个方法吗:
SELECT * FROM CASE_NOTE WHERE CREATE_DT <= '2010-DEC-31'
另一个引人注目的事情是您使用 OLEDB Oracle 源提供程序。
当您全新安装 SSIS 时,这可能是明显的默认选项,但是,Microsoft 提供了另一个性能更高且更可取的选择:
Microsoft Connectors for Oracle and Teradata by Attunity for Integration Services (SSIS)
也许这种替代方案会为您带来更好的 SSIS 体验
【讨论】:
谢谢,我在使用该查询时收到“Not a Valid Month”错误 然后可能是 12 月而不是 12 月。我调整了答案。它背后的想法是 SSIS 是一个 MS 工具,并且有与区域设置无关的日期格式的概念......但是我在你的问题中添加了 oracle 标签,所以也许 oracle 专业人士也可以提出他们的答案 @NicholasLea-Trengrouse,我已经添加了关于 Oracle Attunity 提供者的额外信息。 谢谢,是的,我之前在其他客户网站上使用过 Attunity。它没有安装在这里,所以没有使用它。我会安装它,看看效果如何。 应该是'31-DEC-2010'
以上是关于SSIS 数据流,忽略 SQL 语句中的 where 子句的主要内容,如果未能解决你的问题,请参考以下文章
选择语句从 Netezza 数据库中获取数据并插入 SQL Server 数据库 (SSIS)