复制到运行良好但不加载数据 gzip 文件
Posted
技术标签:
【中文标题】复制到运行良好但不加载数据 gzip 文件【英文标题】:Copy into running fine but not loading data gzip file 【发布时间】:2020-07-31 04:32:32 【问题描述】:我正在使用 talend 批量执行将数据从 s3 加载到雪花。 Talend tFileArchive 将文件转换为 gzip 格式 file.csv.gz 并将其上传到 s3 存储桶。通过 talend 批量组件执行的复制如下所示。它不会抛出错误或其他东西,但也不会加载数据。如果我尝试在没有 zip 的情况下加载 csv 文件,它可以正常工作。
File: file.csv.gz
Copy into table
from 's3://bucket/'
credentials=(aws_key_id='' aws_secret_key='')
FILE_FORMAT=(type=csv compression=gzip field_delimeter=',' skip_header=1 field_optionally_enclosed_by='\"' empty_field_as_null=true)
force=true
有人能指出问题出在哪里吗?即使我通过雪花 UI 执行上述命令,它也说运行成功但没有加载。文件有数据。
谢谢
【问题讨论】:
当您对该表运行 VALIDATE() 函数时,您会看到什么?你看到错误记录了吗? docs.snowflake.com/en/sql-reference/functions/validate.html 它不会出错,如果我将 csv 文件保存到相同的 s3 存储桶位置,它会毫无问题地拾取 csv 文件并加载它,它还会选择 csv.gz 文件但不会加载数据, row_parsed =0 显示在那里, 不需要出错就可以使用 validate() 函数。如果你运行它,你会看到什么回报? 另外,可能发生的情况是 COPY INTO 语句未在存储桶中找到文件。因此,它成功处理了 0 个文件。如果是这种情况,您可能对存储桶有权限问题。尝试使用凭据在 Snowflake 中设置一个阶段到该位置,然后运行 LIST 命令以查看它是否“看到”文件。 感谢您的回复,这是 talend 端的配置问题,在压缩文件时,它正在创建 0 字节文件,因此导致了问题。 【参考方案1】:查看表的 COPY 历史记录以查看是否引发了错误。然后尝试列出您的 S3 存储桶中的文件,以确保您的 STAGE 正常工作。
SELECT *
FROM TABLE(information_schema.copy_history(table_name=>'YourDatabase.YourSchema.YourTable'
, start_time=> dateadd(days, -1, current_timestamp())));
LIST @YourStage
OR
LIST 's3://bucket/'
还要确保您在有权查看 s3 存储桶并写入目标表的角色下执行 COPY INTO 语句。
【讨论】:
以上是关于复制到运行良好但不加载数据 gzip 文件的主要内容,如果未能解决你的问题,请参考以下文章
当“自动”将数据从 S3 加载到 Redshift 表中时,大小写是不是重要? [复制]