运行 用于将 gzip 数据加载到 S3 中的 Redshift 的 COPY 命令
Running a COPY command to load gzip-ed data to Redshift in S3
当我 运行 我的复制命令将所有文件从 S3 文件夹复制到 Redshift table 时失败 "ERROR: gzip: unexpected end of stream. Unknown zlib error code. zlib error code: -1"
:
copy table_name
(column_list)
from 's3://bucket_name/folder_name/'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
然而,当我为文件夹中的每个文件指定文件前缀时,它成功了:
copy table_name
(column_list)
from 's3://bucket_name/folder_name/file_prefix'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
这些文件是 GZIP 压缩文件。
AWS 文档中没有明确指定如果您只指定 folder_name 复制命令加载该文件夹的全部内容就可以了,但是我确实遇到了错误。
有没有人遇到过类似的问题?这种操作需要文件前缀吗?
您的一个 gzip 文件格式不正确。 GZip 在文件末尾包含压缩 "dictionary",没有它就无法扩展。
如果文件没有被完全写入,例如,您 运行 磁盘空间不足 space,那么当您尝试将其加载到 Redshift 时,您会看到您看到的错误。
经验之谈……;-)
我遇到了同样的问题,在我的例子中,gzip 文件是正确的,因为当使用带有确切文件名的复制命令时,它工作正常。
这个问题主要是因为应用程序 "S3 Browser"。当您使用它创建目录时,它会在其中创建一些额外的隐藏文件。当复制命令尝试读取目录中的文件时,它会读取那些隐藏的无效 gzip 文件并抛出错误。
对我来说,问题是清单文件中写入了原始卸载的 gz 文件路径。
您可以删除清单文件,COPY 命令将从您在命令中指定的路径成功读取 gzip 文件。
当我 运行 我的复制命令将所有文件从 S3 文件夹复制到 Redshift table 时失败 "ERROR: gzip: unexpected end of stream. Unknown zlib error code. zlib error code: -1"
:
copy table_name
(column_list)
from 's3://bucket_name/folder_name/'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
然而,当我为文件夹中的每个文件指定文件前缀时,它成功了:
copy table_name
(column_list)
from 's3://bucket_name/folder_name/file_prefix'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
这些文件是 GZIP 压缩文件。
AWS 文档中没有明确指定如果您只指定 folder_name 复制命令加载该文件夹的全部内容就可以了,但是我确实遇到了错误。
有没有人遇到过类似的问题?这种操作需要文件前缀吗?
您的一个 gzip 文件格式不正确。 GZip 在文件末尾包含压缩 "dictionary",没有它就无法扩展。
如果文件没有被完全写入,例如,您 运行 磁盘空间不足 space,那么当您尝试将其加载到 Redshift 时,您会看到您看到的错误。
经验之谈……;-)
我遇到了同样的问题,在我的例子中,gzip 文件是正确的,因为当使用带有确切文件名的复制命令时,它工作正常。
这个问题主要是因为应用程序 "S3 Browser"。当您使用它创建目录时,它会在其中创建一些额外的隐藏文件。当复制命令尝试读取目录中的文件时,它会读取那些隐藏的无效 gzip 文件并抛出错误。
对我来说,问题是清单文件中写入了原始卸载的 gz 文件路径。 您可以删除清单文件,COPY 命令将从您在命令中指定的路径成功读取 gzip 文件。