我在 Redshift 中创建了一个表:
create table myTable (
dateTime TIMESTAMP NOT NULL,
...
);
但是,当我尝试插入包含以下内容的记录时dateTime
的,我收到一个错误stl_load_errors
.
20080215 04:05:06.789
因为我从docs http://docs.aws.amazon.com/redshift/latest/dg/r_Date_and_time_literals.html,我本以为它会起作用。
Redshift 的错误日志显示:
时间戳格式或值无效 [YYYY-MM-DD HH24:MI:SS]
不过,我想多加 3 秒,例如:2015-02-01 15:49:35.123
.
我需要如何修改我的时间戳字段以将其插入到以秒为单位的额外精度?
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
在红移中。
The 文档 http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-load-a-time-datestamp看起来应该精确地导入到 6 个位置,但事实并非如此。
我决定尝试一下默认格式'YYYY-MM-DD HH:MI:SS'
为了导入到 Redshift,所以我必须更改 Postgres 数据库才能以正确的格式导出日期字段的 JSONto_char(updated_at, 'YYYY-MM-DD HH24:MI:SS.SSSSS') as updated_at
.
进行此更改后,新的 JSON 导出为{ "updated_at" : "2014-12-08 21:14:49.351638" }
我将导入 Redshift 的时间格式设置为默认值format as json 'auto' timeformat 'YYYY-MM-DD HH:MI:SS';
通过进行此更改以使用默认时间格式,Redshift 现在可以以正确的精度导入时间戳!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)