使用COPY导入时,Redshift添加列

马丁·塔列斯基

在Amazon Redshift中,我有一个表,需要在其中从多个CSV文件加载数据:

create table my_table (
  id integer,
  name varchar(50) NULL
  email varchar(50) NULL,
  processed_file varchar(256) NULL
);

前三列引用文件中的数据。最后一列processed_filed指示从哪个文件导入记录。

我在Amazon S3中有文件,我想使用COPY命令导入它们就像是:

COPY {table_name} FROM 's3://file-key' 
WITH CREDENTIALS 'aws_access_key_id=xxxx;aws_secret_access_key=xxxxx' 
DATEFORMAT 'auto' TIMEFORMAT 'auto' MAXERROR 0 ACCEPTINVCHARS '*' DELIMITER '\t' GZIP;

有没有一种方法可以processed_file使用COPY命令自动填充第四列,以插入文件名。

我可以在COPY之后执行UPDATE语句,但是我正在处理大量数据,因此理想情况下,如果可能的话,我希望避免这种情况。

约翰·罗滕斯坦

这不可能。

您将需要预处理文件(以包括名称列)或在加载后更新数据(但是这样一来,很难同时从多个文件进行批量加载,这是加载数据的最有效方法)进入Redshift)。

请参阅:RedshiftCOPY命令文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章