Я хотел бы предложить здесь, как мы решили эту проблему в нашем случае, хотя ее простое решение, но может быть полезным для других.Джон Скотт предложил в комментарии хороший вариант, который мне понравился.Но, к сожалению, в нашем случае мы не можем этого сделать, так как система добавления файлов в 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.