首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL清除外壳脚本

问MySQL清除外壳脚本
EN

Stack Overflow用户
提问于 2012-09-27 04:25:59
回答 2查看 1.4K关注 0票数 0

我有一个包含1.2亿行的mysql表,我想编写一个shell脚本来开始清除该表中一些不需要的无用信息。问题是我对shell脚本是个超级新手。

我有一个包含unix时间戳的datetime列。我想删除最近两个月内的每一行,因为我最近制定了一项数据保留策略,允许我只保留两个月的特定数据。

DR需要构建一个shell脚本,该脚本使用datetime列中的unix时间戳删除直到最后两个月的数据的所有行。

更新:这是我的新shell脚本

代码语言:javascript
复制
#!/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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-27 04:40:33

只使用current_timestamp和unix_timestamp函数来执行不是更容易吗:

代码语言:javascript
复制
DELETE FROM Table1 
 WHERE datetime < unix_timestamp(current_timestamp - interval 2 month)

要从shell运行它,您可以将该命令放在文件script1.sql中,并使用mysql命令行工具运行它:

代码语言:javascript
复制
mysql db_name < script1.sql
票数 1
EN

Stack Overflow用户

发布于 2012-09-27 05:18:40

代码语言:javascript
复制
mysql --host ? -user ? -password ? {DB_NAME} < dump_script.sql > data.dat 

dump_script.sql将让您的SELECT statememt检索您要存档的数据。它会将输出存储在data.dat中

然后

代码语言:javascript
复制
mysql --host ? -user ? -password ? {DB_NAME} < delete_script.sql

delete_script.sql将使用与dump_script.sql中相同的WHERE子句包含DELETE语句。

确保锁定该表,以便在两个脚本执行之间不写入任何内容,以避免可能被删除脚本删除但未包含在转储脚本中的幻象插入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12609798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档