【问题标题】:Data getting changed when loading data from as400 to snowflake by using talend使用 talend 将数据从 as400 加载到雪花时数据发生变化
【发布时间】:2020-06-04 02:38:28
【问题描述】:

我正在使用 talend 将数据从 as400 加载到雪花,有一个 varchar 列以 yyyymmdd 格式存储日期,当我将数据加载到雪花中时,数据正在发生变化,例如 as400 中的 19890501 值在雪花中加载为 19890500 ,我尝试在雪花中保留 varchar、日期和数字数据类型,但仍然是同样的问题,任何人都面临同样的问题,请帮助我。

【问题讨论】:

    标签: cloud snowflake-cloud-data-platform


    【解决方案1】:

    这听起来像是一个经典的时区转换问题。来回 6 小时可以将时间戳推迟一天。例如,您所拥有的“20190102”可能在数据库内部实际上被视为“20190101 00:00:00”,如果在导出数据时发生任何转换,这将推回 20190101。我认为与 as400 类似的其他旧数据库也有类似问题。

    请注意,即使您将其保存为 varchar,这也可能在某些平台上发生。有时这些系统会尝试使用您帐户的时区向您显示日期,但它们会在内部将其存储为 UTC。所以当转换为 varchar 时,它可能会保存为 UTC。

    一种解决方法是通过切掉数据的 YYYYMMMDD 部分,将时间戳“强制”为纯日期,而不是时间戳,本质上是将其硬编码为字符串,直到它进入 Snowflake。

    不过,没有捷径可走。需要进行一些故障排除才能确定这是否真的是您的问题,如果是,如何最好地处理它。

    【讨论】:

      【解决方案2】:

      我会仔细检查您的原始数据库和 Snowflake 之间的时区,然后尝试在帐户级别对齐 - 这应该很容易做到:

      https://docs.snowflake.com/en/sql-reference/parameters.html#timezone

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 2021-10-15
        • 2020-10-07
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多