Redshift COPY命令中的时间戳格式无效

问题描述 投票:0回答:1

我已经尝试了SO的几乎所有解决方案,但仍然是同一问题。我在S3中有一个CSV文件,在Redshift中有一个表。

表结构如下:

like_id => inetger
p_id => integer
c_id => integer
date_added => timestamp (without time zone)

CSV文件包含的数据为:

1|1234|9876|2012-08-12 03:30:00
...
...
1500|4545|87545|2019-01-15 08:10:00

[当我在RedShift中运行COPY命令时,它显示Invalid timestamp format or value [YYYY-MM-DD HH:MI:SS]错误,我尝试了RedShift的几乎所有时间日期格式,但仍卡住了。 COPY命令如下:

copy likes from 's3://<myBucketPath>/like.csv'
credentials 'aws_iam_role=<IAM-Role-Here>'
delimiter '|' region 'us-west-2'
timeformat 'YYYY-MM-DD HH:MI:SS';
//timeformat 'MM/DD/YYYY HH:MI:SS'
//dateformat as 'auto'
//timeformat as 'auto'

注意:我以CSV格式从MySQL导出了表,并且date_added列的数据类型为datetime

amazon-web-services amazon-redshift etl aws-glue
1个回答
0
投票

为了重现您的情况,我执行了以下操作:

  • 创建了一个包含以下内容的CSV文件:
1|1234|9876|2012-08-12 03:30:00
1500|4545|87545|2019-01-15 08:10:00
  • 启动了Amazon Redshift集群并创建了一个表:
CREATE TABLE foo (like_id INT, p_id INT, c_id INT, date_added TIMESTAMP WITHOUT TIME ZONE)
  • 通过以下方式将数据从Amazon S3加载到Redshift:
COPY foo
FROM 's3://my-bucket/bar/'
IAM_ROLE 'arn:aws:iam::111111111111:role/my-role'
  • 选择数据:
SELECT * FROM foo

结果是:

1     1234   9876  2012-08-12 03:30:00
1500  4545  87545  2019-01-15 08:10:00

因此,似乎默认情况下已加载它,不需要任何特殊设置。

我知道它是TIMESTAMP WITHOUT TIMEZONE,因为我可以这样做:

SELECT date_added + INTERVAL '15 minutes' FROM foo

2012-08-12 03:45:00
2019-01-15 08:25:00
© www.soinside.com 2019 - 2024. All rights reserved.