amazon-web-services - 复制没有表结构的 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
解决方案
你正在做正确的过程。
COPY
通过命令加载数据时,无法“跳过”列。
另一种方法是在将数据加载到 Redshift之前预处理文件并删除不需要的列。
推荐阅读
- javascript - 从另一个文件访问 SocketIO
- mysql - 选择查询中的 MySQL 存储过程循环增量日期返回最后日期
- javascript - 复选框函数使用兄弟().map(function() 需要转换为php数组
- kubernetes - Ansible 运行“kubectl apply kube-flannel.yml”不起作用
- java - Spring 重试性能
- powershell - 如何根据 PowerShell 中的长集验证参数?
- python - 给定笔画的一些坐标(x,y),如何平滑笔画?
- java - notifyDataSetChanged 在片段上无法正常工作
- javascript - 如何在 Cocos Creator 中编码 HTML 字符串?
- r - 之间的区别!!和 mutate_at 中的 eval_tidy