Redshift 复制命令递归扫描

Posted

技术标签:

【中文标题】Redshift 复制命令递归扫描【英文标题】:Redshift copy command recursive scan 【发布时间】:2016-04-13 11:34:09 【问题描述】:

是否可以复制根目录/bucket下的所有文件

示例文件夹结构:

/2016/01/file.json
/2016/02/file.json
/2016/03/file.json
...

我已尝试使用以下命令:

copy mytable
FROM 's3://mybucket/2016/*'
CREDENTIALS 'aws_access_key_id=<>;aws_secret_access_key=<>'
json 's3://mybucket/jsonpaths.json'

【问题讨论】:

【参考方案1】:

为加载指定一个前缀,所有具有该前缀的 Amazon S3 对象都将(并行)加载到 Amazon Redshift。

例子:

copy mytable
FROM 's3://mybucket/2016/'

将加载存储在:mybucket/2016/*中的所有对象

copy mytable
FROM 's3://mybucket/2016/02'

将加载存储在:mybucket/2016/02/*中的所有对象

copy mytable
FROM 's3://mybucket/2016/1'

将加载存储在:mybucket/2016/1*(例如 10、11、12)中的所有对象

基本上,它只是确保对象以给定的字符串开始(包括完整路径)。

【讨论】:

【参考方案2】:

显然这很简单,只需将源网址更改为s3://mybucket/2016/,不需要通配符。

【讨论】:

以上是关于Redshift 复制命令递归扫描的主要内容,如果未能解决你的问题,请参考以下文章

RedShift 复制命令返回

执行 Redshift 复制命令时获取凭据的最佳实践

Redshift:从 s3 复制命令 Json 数据

复制命令 Amazon Redshift

AWS:使用从 s3 到 redshift 的复制命令时没有插入任何内容

Redshift 复制命令错误“溢出,列类型:整数”