尽管有效数据,但Redshift上的COPY始终会因时间戳错误而失败

时间:2016-08-21 01:17:15

标签: sql postgresql amazon-redshift

我有这些数据无法通过COPY导入我的红移群集:

"piXKfqz9e54V6n799BYnKSsc2nI="|"e45a2fb9-d0a1-4ffe-bb55-5e91548fbd79"|"\\N"|"2016-08-06 12:34:49"|"2016-08-06 12:34:49"|"impression"|"e45a2fb9-d0a1-4ffe-bb55-5e91548fbd79"|"marketplace_server"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"\\N"|"/lead_dyno/visit_store/140409475"|"lead_dyno"|"visit_store"|"140409475"|"lead_dyno"|"\\N"|"2607:fb90:6847:e17b:1304:2a57:e797:80ed"|"\\N"|"Mozilla/5.0 (Linux; Android 6.0; LGMS631 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36"

错误是:

Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]

有问题的字段是第4个字段,其值为:

"2016-08-06 12:34:49"

我基本上尝试过每一个我想到的标志,试图通过COPY导入它:

copy event from 's3://bucket/test-manifest' credentials 'aws_access_key_id=<KEY>;aws_secret_access_key=<SECRET>' removequotes gzip manifest NULL AS '\\N';

我已尝试添加

timeformat 'auto'
timeformat 'YYYY-MM-DD HH24:MI:SS' dateformat 'YYYY-MM-DD'
timeformat 'YYYY-MM-DD HH24:MI:SS'
timeformat 'YYYY-MM-DD HH:MI:SS'

我真的无法找到任何方法来获取这一行,而且我没有发现这些数据有任何问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我认为您的错误不是由于格式化造成的。我用你的复制声明测试了你的数据,这是我第一次尝试的。也许是清单文件的语法,表格的DDL,S3中文件的位置。

我刚刚使用您的数据进行测试,运行正常。

将我的文件与您的文件进行比较,它可能会帮助您找到问题。

以下是我使用的内容:

我的桌子DDL在这里:

CREATE TABLE tba (
 text1 varchar(256) NULL
,text2 varchar(256) NULL
,text3 varchar(256) NULL
,date01 timestamp NULL
,date02 timestamp NULL
,text4 varchar(256) NULL
) DISTSTYLE EVEN;

这是我的data1.txt文件的内容

"piXKfqz9e54V6n799BYnKSsc2nI="|"e45a2fb9-d0a1-4ffe-bb55-5e91548fbd79"|"\\N"|"2016-08-06 12:34:49"|"2016-08-06 12:34:49"|"impression"

这是我的data1-manifest文件

{
  "entries": [
    {"url":"s3://<<my-bucket>>/data1.txt", "mandatory":true}
  ]
}

这是我的复制声明(基本上是你的复制和粘贴)

copy tba from 's3://rocha-dev/data1-manifest' credentials 
'aws_access_key_id=<<mykey>>;aws_secret_access_key=<<my-secret>>' removequotes  manifest NULL AS '\\N';

下面是从我的PSQL窗口复制的,该窗口显示成功执行:

dev=# CREATE TABLE tba (
dev(#  text1 varchar(256) NULL
dev(# ,text2 varchar(256) NULL
dev(# ,text3 varchar(256) NULL
dev(# ,date01 timestamp NULL
dev(# ,date02 timestamp NULL
dev(# ,text4 varchar(256) NULL
dev(# ) DISTSTYLE EVEN;
CREATE TABLE


dev=# copy tba from 's3://<<my-bucket>>/data1-manifest' credentials 'aws_access_key_id= <<my-key>>; aws_secret_access_key=<<my-secret>>' removequotes  manifest NULL AS '\\N'; 
INFO:  Load into table 'tba' completed, 1 record(s) loaded successfully.
COPY


dev=# select * from tba;
            text1             |                text2                 | text3 |       date01        |       date02        |   text4    
------------------------------+--------------------------------------+-------+---------------------+---------------------+------------
 piXKfqz9e54V6n799BYnKSsc2nI= | e45a2fb9-d0a1-4ffe-bb55-5e91548fbd79 | \\N   | 2016-08-06 12:34:49 | 2016-08-06 12:34:49 | impression
(1 row)

我的陈述和你的陈述之间唯一的重大区别是我没有使用gzip,因为我只有一条记录要加载。