如何将TIMESTAMP列插入Redshift

Kev*_*ith 11 timestamp amazon-web-services amazon-redshift

我在Redshift中创建了一个表:

create table myTable (
       dateTime TIMESTAMP NOT NULL,
       ...
);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试插入包含a dateTime的记录时,我收到错误stl_load_errors.

20080215 04:05:06.789

由于我从文档中获取了这个时间戳,我希望它能够起作用.

Redshift的错误日志显示:

时间戳格式或值无效[YYYY-MM-DD HH24:MI:SS]

但是,我想包括3秒,例如:2015-02-01 15:49:35.123.

如何修改我的时间戳字段以在几秒钟内以额外的精度插入它?

小智 21

TL; DR - 从S3文件导入Redshift时,强制导入的数据具有该'YYYY-MM-DD HH:MI:SS'Redshift 所需的默认时间格式,以便获得精确度超过秒,否则将被截断.

我试图上传从S3进入时遇到了同样的问题.我原来的JSON有这样的时间戳.{ "updated_at" : "2014-12-08T21:14:49.351638" }.然而,当我把它拉进Redshift时,我需要设置格式,其中包括T之前的时间.

COPY schema.temp_table FROM 's3://s3-bucket/file-name' WITH CREDENTIALS 'aws_access_key_id=access-key;aws_secret_access_key=secret-key' format as json 'auto' timeformat 'YYYY-MM-DDTHH:MI:SS';

这导入了一切,但是时间总是被截断到秒,所以我最终会2014-12-08 21:14:49在Redshift中.

文件看起来像这应该精确导入了6个地方,但事实并非如此.

我决定尝试'YYYY-MM-DD HH:MI:SS'导入Redshift 的默认格式,所以我必须更改我的Postgres数据库,以正确的格式导出日期字段的JSON to_char(updated_at, 'YYYY-MM-DD HH24:MI:SS.SSSSS') as updated_at.

进行此更改后,导出的新JSON { "updated_at" : "2014-12-08 21:14:49.351638" }和我将导入Redshift的timeformat设置为默认值format as json 'auto' timeformat 'YYYY-MM-DD HH:MI:SS';

通过使此更改使用默认时间格式Redshift现在以正确的精度导入时间戳!


San*_*ane 6

在您的复制命令中,请添加此时间格式 'YYYY-MM-DD HH:MI:SS';

请参阅了解更多详细信息


jet*_*jet 6

timeformat 'auto'并且dateformat 'auto'在我的格式上运作良好2017-11-02T21:04:03.108Z.有关http://docs.aws.amazon.com/redshift/latest/dg/automatic-recognition.html的文档