Amazon web services 如何在源文件中缺少分隔符时复制数据

Amazon web services 如何在源文件中缺少分隔符时复制数据,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,假设我有一个红移的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中,如下所示:

假设我有一个红移的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中,如下所示:

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分隔符,我无法在此处加载数据,有人能建议我如何解决此问题吗

谢谢

1)尝试将
FILLRECORD
参数添加到
COPY
语句中

有关更多信息,请参阅文档

2) 若所有行都缺少col3和col4,那个么只需使用col1和col2创建一个临时表,将数据复制到临时表,然后发出

ALTER TABLE target_tablename
APPEND FROM staging_tablename
FILLTARGET;
这将非常有效地将数据移动到
target_tablename
(只需在不写入或删除数据的情况下更改指针),并注意缺少col3和col4


有关该命令的更多信息:

这不会是巧合吧?@CraigRinger Yes man我知道……我正在试图从中找到出路。如果你能提出你为什么要混淆数据?搜索“美国农业部食品数据库博士后”,请参阅。然而,上次我查看美国农业部数据库时,它没有缺少尾随分隔符。我发布了一个案例的答案,当col_3和col_4完全缺失时,但后来我从您的数据示例中意识到,它们可能位于数据的每一偶数行中,col_1和col_2位于每一奇数行中。。。你能证实吗?