You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake执行COPY INTO导入CSV时Timestamp格式不识别问题求助

报错根因

你遇到的时间识别报错不是字符'T'导致的,核心原因是你当前使用的fbk.fbk_insights文件格式没有适配带4位数字时区偏移的ISO 8601时间格式,Snowflake默认时间解析规则不匹配2021-09-17T07:00:00+0000这类格式。

Timestamp '2021-09-17T07:00:00+0000' is not recognized
Row 1, column "FACEBOOK_INSIGHTS"["END_TIME":8]

可选解决方案

方案1:无需修改pandas导出的CSV,直接调整Snowflake侧配置(推荐)

不需要改动上游数据导出逻辑,仅调整导入侧配置即可,有两种实现方式:

  • 方式1:在COPY INTO语句中新增时间格式显式转换
    假设你原SELECT语句中的$7对应END_TIME字段,修改后语句如下:

    COPY INTO fbk.fbk_insights
    FROM (
        SELECT 
            CURRENT_TIMESTAMP::TIMESTAMP_LTZ, 
            METADATA$FILENAME, 
            METADATA$FILE_ROW_NUMBER, 
            $1, $2, $3, $4, $5, $6, 
            TO_TIMESTAMP($7, 'YYYY-MM-DD"T"HH24:MI:SSTZHTZM') -- 按实际时间格式匹配转换
        FROM @luigi.etc/FBK/insights/2021-09-19/
    )
    file_format = (format_name = 'fbk.fbk_insights')
    TRUNCATECOLUMNS = FALSE
    FORCE = FALSE
    

    格式串说明:"T"匹配固定的T字符,TZHTZM匹配+0000这类4位时区偏移。

  • 方式2:修改现有文件格式的默认时间解析规则
    一劳永逸适配所有同格式的文件导入,不需要修改COPY INTO语句:

    ALTER FILE FORMAT fbk.fbk_insights 
    SET TIMESTAMP_FORMAT = 'YYYY-MM-DD"T"HH24:MI:SSTZHTZM';
    

方案2:调整pandas侧的时间导出格式

如果需要统一所有导出文件的时间格式,避免后续跨系统适配问题,可以在导出CSV前调整时间格式:
你提供的示例df['end_time']=pd.to_datetime(df['end_time'])仅将列转换为datetime类型,导出CSV时仍会默认生成带T的ISO格式,需要额外指定输出格式:

# 方法1:保留时区信息,输出为Snowflake默认可识别的格式
df['end_time'] = pd.to_datetime(df['end_time']).dt.strftime('%Y-%m-%d %H:%M:%S %z')

# 方法2:统一转为UTC时间,去掉时区偏移,适配性更强
df['end_time'] = pd.to_datetime(df['end_time']).dt.tz_convert('UTC').dt.strftime('%Y-%m-%d %H:%M:%S')

调整后再导出CSV,使用原COPY INTO语句即可直接导入。

内容的提问来源于stack exchange,提问作者KristiLuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:24:04