gpt4 book ai didi

amazon-web-services - 如果 S3 前缀不存在,Redshift COPY 命令会引发错误

转载 作者:行者123 更新时间:2023-12-04 17:45:17 25 4
gpt4 key购买 nike

当我运行这个 COPY 命令时:

COPY to_my_table (field1, field2, etc)
FROM s3://my-service-f55b83j5vvkp/2018/09/03
CREDENTIALS 'aws_iam_role=...'
JSON 'auto' TIMEFORMAT 'auto';

我收到此错误:
The specified S3 prefix '2018/09/03' does not exist

这是有道理的,因为我的 S3 存储桶在该特定前缀中没有任何文件。然而,这是加载数据的日常工作的一部分,有时需要加载一些东西,但有时却没有任何东西可以加载。

我查了 COPY documentation并且似乎没有任何方法可以避免错误,并且如果该前缀下没有对象,则不执行任何操作。也许我错过了什么?

最佳答案

我想在这里提出建议,在我们的案例中,我们是如何解决这个问题的,虽然它的解决方案很简单,但可能对其他人有帮助。 Jon Scot 在我喜欢的评论中提出了不错的选择。但是,不幸的是,在我们的案例中,我们无法这样做,因为系统将文件添加到 S3 不在我们的控制范围内。所以不确定它也是你的情况。
我认为您可以通过多种方式解决您的问题,但我建议您选择以下两个选项。

1) 由于您可能正在运行 cron 作业以将数据加载到 Redshift,请在执行 Copy 之前检查文件是否存在。命令,如下所示。

path=s3://my-service-f55b83j5vvkp/2018/09/03
count=\`s3cmd ls $path | wc -l\`

if [[ $count -eq 1 ]]; then
//Your Redshift copy code goes here.
else
echo "Nothing to load"
fi

此选项的优点是您节省了一些成本,尽管可能完全可以忽略不计。

2) 没有记录的虚拟文件,最终不会将数据加载到 Redshift。

关于amazon-web-services - 如果 S3 前缀不存在,Redshift COPY 命令会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com