将镶木地板文件加载到红移时如何格式化时间戳字段?

Posted

技术标签:

【中文标题】将镶木地板文件加载到红移时如何格式化时间戳字段?【英文标题】:How to format timestamp field while loading parquet file to redshift? 【发布时间】:2019-02-13 13:57:35 【问题描述】:

我有一堆带有不同格式时间戳字段的镶木地板文件。我想在将数据加载到红移表时统一格式。但是下面的语法不起作用,它会抛出错误TIMEFORMAT argument is not supported for PARQUET based COPY

有什么解决办法吗?我只能想到一种解决方案,即在创建 parquet 文件时统一所有时间戳格式。由于我必须加载 2-3 年的 parquet 文件,因此该解决方案非常耗时。如果您有任何其他解决方案或以下语法中缺少任何内容,任何人都可以告诉我

语法:

COPY redshift_table_name
FROM 's3://path/to/files'
IAM_ROLE '*****'
TIMEFORMAT AS 'YYYY-MM-DDTHH:MI:SS'
FORMAT AS PARQUET

【问题讨论】:

如何在 parquet 文件上定义多个 Spectrum 表,每个表对应不同的日期格式?然后,您可以从这些 Spectrum 表查询到单个 Redshift 表,同时标准化日期。您没有提到有多少种独特的日期格式,但如果只有少数,那么这可能对您有用。 【参考方案1】:

如果您可以使用 Pyarrow 库,请加载 parquet 表,然后使用 use_deprecated_int96_timestamps 参数加载 write them back out in Parquet format。 Redshift 将正确识别这些。在加载 Parquet 时,我无法让它正确识别任何其他时间戳格式。

【讨论】:

以上是关于将镶木地板文件加载到红移时如何格式化时间戳字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将镶木地板格式的特定列加载到 Redshift 光谱中?

如何使用 Spark 将镶木地板文件加载到 Hive 表中?

如何将镶木地板文件从 s3 导入到 postgresql rds

我们可以使用复制命令使用访问密钥和秘密密钥将数据从 S3 加载到红移表中吗(不使用 IAM 角色)

AWS Redshift:如何存储大小大于 100K 的文本字段

有没有办法通过数据管道以预定义的顺序将文件从 S3 复制到红移