如何在 bash 中跟踪上次成功运行



我正在运行一个ETL脚本,该脚本将数据从mysql加载到teradata中。该脚本旨在选择晚于上次成功运行 bash 脚本的时间戳的所有行。由于我没有对 mysql 数据库的写入权限,因此我需要使用 bash 脚本存储上次运行时间戳。有没有一种简单的方法来存储成功运行的时间戳?我想我可以有一个文件,我会在脚本末尾触摸它,然后检查它的 mtime,或者只是从日志文件中解析出时间戳。有什么更好的策略可以做到这一点?

在脚本中,使用 set -e 1,以便在脚本中的任何命令失败时脚本立即退出。然后,在最后,使用 unix 时间戳date +%s记录成功完成。

然后,可以使用 SELECT FROM_UNIXTIME(<YOUR TIMESTAMP>, <YOUR MYSQL DATE FORMAT>) 2 拉取比上次成功完成更新的行。

一个很大的警告:我不会仅仅依靠时间戳来解决这个问题。我会从具有一些时间重叠的 MySQL 中提取,并检查每次插入 teradata 的主键以避免插入重复项。要遵循此方法,只需从<YOUR TIMESTAMP>中减去 1800 即可确保 30 分钟的重叠。

相关内容

  • 没有找到相关文章

最新更新