如何从s3加载大量小型CSV文件到redshift?

时间:2019-02-05 06:08:07

标签: amazon-s3 amazon-redshift

我有很多CSV文件(〜12k),这些文件很小(每个〜250条记录)。我想将它们加载到同一区域中的大小为3的集群的红移中,但这要花很长时间。

我在SQL Workbench / J中使用的查询是:

copy gsod from 's3://[path to folder]' access_key_id '******' secret_access_key '******' delimiter ',' BLANKSASNULL emptyasnull IGNOREHEADER 1 maxerror as 100000;

如果我使用单个文件,查询将在几秒钟内完成。但是,尽快加载所有文件的最佳方法是什么?

我尝试从s3的同一区域加载文件。

copy gsod from 's3://[path to folder]' access_key_id '******' secret_access_key '******' delimiter ',' BLANKSASNULL emptyasnull IGNOREHEADER 1 maxerror as 100000;

1 个答案:

答案 0 :(得分:1)

选择manifest文件选项。它将真的很快。

https://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html

  {
"entries": [
{"url":"s3://mybucket-alpha/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-alpha/2013-10-05-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-05-custdata", "mandatory":true}
]}

这将并行执行copy,而不是一个一个地处理文件,而是一次加载所有文件。

copy customer from 's3://mybucket/your-manifest-file' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

希望获得帮助。