Redshift Spectrum:如何仅导入某些文件

时间:2019-08-03 10:58:09

标签: sql amazon-redshift amazon-redshift-spectrum

使用redshift频谱时,似乎您只能导入提供位置的数据,直到一个文件夹为止,并且它会导入该文件夹内的所有文件。

是否可以从只有多个文件的文件夹中导入仅导入一个文件。当提供带有文件名的完整路径时,我认为它将文件视为清单文件并给出错误:清单太大或不支持JSON。

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您无意中回答了自己的问题:使用清单文件

来自CREATE EXTERNAL TABLE - Amazon Redshift

  

LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }

     

包含数据文件或清单文件的Amazon S3存储桶或文件夹的路径,清单文件包含Amazon S3对象路径的列表。这些存储桶必须与Amazon Redshift集群位于同一AWS区域中。

     

如果路径指定清单文件,则s3://bucket/manifest_file参数必须显式引用单个文件,例如's3://mybucket/manifest.txt'。它无法引用键前缀。

     

清单是JSON格式的文本文件,它列出要从Amazon S3加载的每个文件的URL 和文件大小(以字节为单位)。该URL包括存储桶名称和文件的完整对象路径。清单中指定的文件可以位于不同的存储桶中,但所有存储桶必须与Amazon Redshift群集位于同一AWS区域中。

我不确定为什么它需要每个文件的长度。它可能用于在多个节点之间分配工作负载。