递归地将数据从redshift卸载到S3存储桶

时间:2018-02-16 06:44:24

标签: amazon-s3 amazon-redshift

我正在尝试以递归方式将数据从redshift卸载到每个运行的不同文件夹中的S3存储桶中。有没有办法从redshift卸载命令执行此操作?

卸载('select * from venue') 到's3:// mybucket / tickit / venue_' iam_role'arn:aws:iam :: 0123456789012:role / MyRedshiftRole' 清单;

我希望s3存储桶有这个子文件夹:

S3:// mybucket / TickIT审核/ venue_12 / venue_0000_part_00 S3:// mybucket / TickIT审核/ venue_21 / venue_0000_part_00 s3:// mybucket / tickit / venue_34 / venue_0000_part_00

这个场所_ *其中*来自卸载命令中的选择查询

2 个答案:

答案 0 :(得分:0)

您必须设计一个包含表列表的元数据表,并在元数据表中根据需要添加条件。 1.借助python /其他脚本语言读取元数据,并为具有特定存储桶的各个表执行卸载命令(通常将tablename作为bucketname或您喜欢的任何其他格式) 2.执行上面的代码将数据卸载到相应的存储桶

答案 1 :(得分:0)

使用在EC2实例或其他任何地方运行的python脚本,您可以实现这一点。

例如,如果您要导出每个新的10000行数据,可以将其添加到var mapperProvider = new MapperProvider(); services.AddSingleton<IMapper>(mapperProvider.GetMapper()); services.AddAutoMapper(mapperProvider.Assemblies); 查询中,并跟踪要使用以下内容卸载的当前偏移量 Python程序。

UNLOAD

以所需的时间间隔执行上述查询,并将数据存储在所需的文件名/文件路径中。