2015-04-30 37 views
0

我正在運行一個將數據從mysql加載到teradata的ETL腳本。該腳本旨在選擇晚於上次成功運行bash腳本的時間戳的所有行。由於我沒有對mysql數據庫的寫入權限,因此我需要使用bash腳本存儲上次運行時間戳。有沒有簡單的方法來存儲成功運行的時間戳?我在想我可以在腳本的末尾添加一個文件,然後檢查它的mtime,或者只是從日誌文件中解析出時間戳。有什麼更好的策略來做到這一點?如何跟蹤上次在bash中的成功運行

+0

我認爲,時間戳是使用bash處理的最簡單的日期格式。它可以用'date --date ='@ 2147483647''轉換成任何形式。不知道我是否理解你的問題。 – user3132194

+1

所以這與Teradata無關? – Andrew

+0

我想不是,我會刪除標記 – sakurashinken

回答

1

在您的腳本中,使用set -e1,以便在腳本中的任何命令失敗時腳本立即退出。然後,最後,使用unix時間戳date +%s記錄成功完成。

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

一個大問題:我不會僅僅依靠時間戳來解決這個問題。我會從MySQL中抽出一些時間重疊,並檢查每個插入的主鍵到teradata中以避免插入重複項。按照這種方法,只需從<YOUR TIMESTAMP>減去1800,以確保30分鐘的重疊。