假设我有一张4张红色转换表,其中 4列为:
Create Table m.mytab(
col_1 BIGINT NOT NULL
col_2 Varchar(200)
col_3 Varchar(200)
col_4 INT
);
我的源行文件包含以下数据:
col_1^col_2^col_3^col_4
myrowdata1^myrowdata2
myrowdata3^myrowdata4
.....
在这里,我想在mytab中加载此数据,我尝试使用redshift copy command作为:
copy m.mytab
from 's3://mybucket/folder/fileA.gz '
credentials 'aws_access_key_id=somexxx;aws_secret_access_key=somexxx'
DELIMITER '^'
GZIP
IGNOREHEADER 1
ACCEPTINVCHARS;
由于每行都缺少最后一个 2分隔符,我无法在此处加载数据,有人可以建议我如何解决此问题吗?
由于
答案 0 :(得分:1)
1)尝试将FILLRECORD
参数添加到COPY
语句
有关详细信息,请参阅Data Conversion Parameters文档
2)如果所有行都缺少col3和col4,您只需创建一个仅包含col1和col2的临时表,将数据复制到临时表,然后发出
ALTER TABLE target_tablename
APPEND FROM staging_tablename
FILLTARGET;
这将非常有效地将数据移动到target_tablename
(只需更改指针而不写入或删除数据)并注意缺少col3和col4。
有关该命令的更多信息:ALTER TABLE APPEND