【问题标题】:CSV file w/ two different timestamp formats in SnowflakeSnowflake 中具有两种不同时间戳格式的 CSV 文件
【发布时间】:2019-10-16 14:56:25
【问题描述】:
(代表雪花用户提交)
我有一个 csv 文件,它有两种不同的时间戳格式。
例如:
- time_stmp1:
2019-07-01 00:03:17.000 EDT
- time_stmp2:
2019-06-30 21:03:17 PDT
在复制命令中,我只能指定一种格式。
我应该如何继续加载 TIMESTAMP_LTZ 数据类型的两列?
有什么建议吗?
【问题讨论】:
标签:
snowflake-cloud-data-platform
【解决方案1】:
您可以使用 COPY INTO 的 SELECT 形式单独转换日期字段,例如:
COPY INTO MY_TABLE (NAME, DOB, DOD, HAIR_COLOUR)
FROM (
SELECT $1, TO_DATE($2,'YYYYMMDD'), TO_DATE($3,'MM-DD-YYYY'), $4
FROM @MY_STAGE/mypeeps (file_format => 'MY_CSV_FORMAT')
)
ON_ERROR = CONTINUE;
【解决方案2】:
目前,Snowflake 不允许从单个文件加载具有不同日期格式的数据。
如果文件中的数据只是日期,则使用数据类型作为日期,在文件格式中,将日期定义为自动。
如果数据包含日期和时间,则使用数据类型作为时间戳,并根据数据文件在 FILE FORMAT 中定义时间戳。
DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'YY/MM/DD HH24:MI:SS'
如果文件中有多种日期格式,例如MM/DD/YY和MM/DD/YY HH:MI:SS,则无法正确加载,可能需要拆分文件单独加载或将所有数据(日期类型)更新为单一通用格式并将其加载到表中。