首页 > 解决方案 > 复制没有表结构的 Redshift

问题描述

我想通过复制指令将一个临时表从 S3 加载到 Redshift,然后选择一些字段并创建一个最终表,但我不知道如何在不知道所有结构的情况下从 s3 加载文件。

让我用一个例子来解释:

我的文件在 s3

col1   col2   col3
a       1     b
b       4     c

我想要一个只有 col2 的决赛桌,所以我执行以下操作:

CREATE TEMPORARY TABLE stg(col1 varchar, col2 integer, col3 varchar);
COPY stg FROM myfile
CREDENTIALS
'aws_access_key_id=***;aws_secret_access_key=***'
 NULL as '' IGNOREHEADER AS 1
;
create table FINAL as
select
              col2
from stg

我想要这样的东西(所以我不需要知道结构,只知道它会有 col2):

CREATE TEMPORARY TABLE stg as (
COPY stg FROM myfile
CREDENTIALS
'aws_access_key_id=***;aws_secret_access_key=***'
 NULL as '' IGNOREHEADER AS 1
);

create table FINAL as
select
              col2
from stg

标签: amazon-web-servicesamazon-s3copyamazon-redshift

解决方案


你正在做正确的过程。

COPY通过命令加载数据时,无法“跳过”列。

另一种方法是在将数据加载到 Redshift之前预处理文件并删除不需要的列。


推荐阅读