Sto*_*tod 3 sql copy amazon-redshift
我正在将 .csv 文件从 S3 复制到 Redshift 中,Redshift COPY 命令返回
我的日期都是 10 个字符长,并且采用默认的“YYYY-MM-DD”格式。
命令:
COPY [table]
FROM [file location]
ACCESS_KEY_ID [___]
SECRET_ACCESS_KEY [____]
FORMAT AS CSV
IGNOREHEADER 1;
Run Code Online (Sandbox Code Playgroud)
该表是使用以下命令创建的:
CREATE TABLE finance.commissions_life (
submitted_date date,
campaign varchar(40),
click_id varchar(40),
local_id varchar(40),
num_apps float);
Run Code Online (Sandbox Code Playgroud)
.csv 也采用同样的格式。
还有其他人有类似的问题吗?
当我过去遇到这个错误时,我总是求助于显式定义要使用的分隔符和日期格式:
COPY db.schema.table
FROM 's3://bucket/folder/file.csv'
CREDENTIALS 'aws_access_key_id=[access_key];aws_secret_access_key=[secret_access_key]'
DELIMITER AS ','
DATEFORMAT 'YYYY-MM-DD'
IGNOREHEADER 1
;
Run Code Online (Sandbox Code Playgroud)
如果您能够更改 S3 文件的结构/格式,则应明确将日期括在引号中,并将其保存为制表符分隔的文本文件而不是 CSV。如果你能做到这一点,COPY那么你的命令将是:
COPY db.schema.table
FROM 's3://bucket/folder/file.csv'
CREDENTIALS 'aws_access_key_id=[access_key];aws_secret_access_key=[secret_access_key]'
DELIMITER AS '\t'
DATEFORMAT 'YYYY-MM-DD'
IGNOREHEADER 1
REMOVEQUOTES
;
Run Code Online (Sandbox Code Playgroud)
此外,您应该能够查询系统表stl_load_errors以收集有关导致加载失败的确切行/文本的附加信息:
SELECT *
FROM stl_load_errors
ORDER BY starttime DESC
;
Run Code Online (Sandbox Code Playgroud)
小智 5
扩展@John提供的答案,dateformat 'auto'在复制命令中使用以获得更大的灵活性。另外,如果他的回答解决了问题,请将其标记为已接受,以便我们知道。如果没有,您可以查询系统错误表以查看错误记录并编辑您的问题以发布“raw_line”或“raw_field_value”值吗?