使用COPY导入时,Redshift添加列

Mar*_*ski 3 import amazon-redshift

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

create table my_table (
  id integer,
  name varchar(50) NULL
  email varchar(50) NULL,
  processed_file varchar(256) NULL
);
Run Code Online (Sandbox Code Playgroud)

前三列引用文件中的数据。最后一列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;
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*ein 6

这是不可能的。

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

请参阅:Redshift COPY命令文档