gpt4 book ai didi

ssis - 使用 SSIS 将数据从 Oracle 复制到 SQL Server 时处理时间戳/日期时间

转载 作者:行者123 更新时间:2023-12-02 06:44:29 24 4
gpt4 key购买 nike

我正在使用 SSIS 将数据从 Oracle 中的表复制到 SQL Server 2005 中的表。不需要进行任何转换,因此它只是将 OLE DB 源连接到 OLE DB 目标的直线。相当简单且有效,但在执行期间,Oracle 表中的一条记录包含 0002 年的时间戳值,因此 SSIS 由于溢出异常而出错。

如果我在 SQL Server 中创建一个数据类型为字符串的额外列,并重新映射,那么就可以正常工作。但是,我更喜欢保留 Datatime 列并在我的目的地使用它。我可以用 1900 之类的东西替换 0002 年。那么在 SSIS 中实现此 if-then-else 的最佳方法是什么?

最佳答案

我通常让 Oracle 在我的源查询中使用类似这样的东西来处理这个问题:

CAST( Coalesce (
CASE
WHEN TO_CHAR(Effective_Date,'yyyy-mm-dd HH24:MI:SS') < '1900-01-01 00:00:00'
THEN TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS')
ELSE Effective_Date
END ,TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS')) AS DATE) AS Effective_Date

这设置了一个有效但非常 future 的日期(由与我签订契约(Contract)的公司指定,作为必填日期字段中无效日期的表示。您也可以使用 '1900-01-01 00:00 :00' 而不是 '9999-12-31 00:00:00') 在原始日期为 null 或小于 的情况下1900-01-01 00:00:00。它还避免了 SSIS 对日期字段进行后处理。

关于ssis - 使用 SSIS 将数据从 Oracle 复制到 SQL Server 时处理时间戳/日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com