我有很多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;
答案 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;
希望获得帮助。