簡體   English   中英

MySQL清除shell腳本

[英]MySQL purging shell script

我有一個具有1.2億行的mysql表,我想編寫一個shell腳本來開始清除該表中不需要的一些無用信息。 問題是我是Shell腳本的超級新手。

我有一個datetime列,里面有一個unix時間戳。 自最近制定了一項數據保留政策以來,我想刪除過去兩個月內未出現的每一行,該政策只允許我保留2個月的某些數據。

TL; DR需要構建一個shell腳本,該腳本通過使用datetime列中的unix時間戳來刪除直到最后兩個月數據為止的所有行。

更新:這是我的新shell腳本

#!/bin/sh

i=1
while [ "$i" -ne 0 ]
do
  i=mysql -h 127.0.0.1 -u halo_ylh -pCa5d8a88 halo_twittstats < mysqlpurge.sql
  sleep 10
done

僅使用current_timestampunix_timestamp函數執行會不會更容易:

DELETE FROM Table1 
 WHERE datetime < unix_timestamp(current_timestamp - interval 2 month)

要從外殼運行它,可以將該命令放在文件script1.sql ,然后使用mysql命令行工具運行它:

mysql db_name < script1.sql
mysql --host ? -user ? -password ? {DB_NAME} < dump_script.sql > data.dat 

dump_script.sql將具有SELECT狀態存儲器,以檢索要歸檔的數據。 它將輸出存儲在data.dat中

然后

mysql --host ? -user ? -password ? {DB_NAME} < delete_script.sql

delete_script.sql將使用與dump_script.sql中相同的WHERE子句包含DELETE語句。

確保鎖定表,以免在兩個腳本執行之間寫入任何可能使它進入WHERE子句的腳本,以避免幻影插入被刪除腳本刪除但不包含在轉儲腳本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM