我有一个包含1.2亿行的mysql表,我想编写一个shell脚本来开始清除该表中一些不需要的无用信息。问题是我对shell脚本是个超级新手。
我有一个包含unix时间戳的datetime列。我想删除最近两个月内的每一行,因为我最近制定了一项数据保留策略,允许我只保留两个月的特定数据。
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发布于 2012-09-27 04:40:33
只使用current_timestamp和unix_timestamp函数来执行不是更容易吗:
DELETE FROM Table1
WHERE datetime < unix_timestamp(current_timestamp - interval 2 month)要从shell运行它,您可以将该命令放在文件script1.sql中,并使用mysql命令行工具运行它:
mysql db_name < script1.sql发布于 2012-09-27 05:18:40
mysql --host ? -user ? -password ? {DB_NAME} < dump_script.sql > data.dat dump_script.sql将让您的SELECT statememt检索您要存档的数据。它会将输出存储在data.dat中
然后
mysql --host ? -user ? -password ? {DB_NAME} < delete_script.sqldelete_script.sql将使用与dump_script.sql中相同的WHERE子句包含DELETE语句。
确保锁定该表,以便在两个脚本执行之间不写入任何内容,以避免可能被删除脚本删除但未包含在转储脚本中的幻象插入。
https://stackoverflow.com/questions/12609798
复制相似问题