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现在以正确的精度导入时间戳!
timeformat 'auto'并且dateformat 'auto'在我的格式上运作良好2017-11-02T21:04:03.108Z.有关http://docs.aws.amazon.com/redshift/latest/dg/automatic-recognition.html的文档
| 归档时间: |
|
| 查看次数: |
24253 次 |
| 最近记录: |