脚本输入:mysql端口号,mysql密码,mysql所在ip,MySQL的表,mysql表的列名 步骤一,登录mysql获取表的结构 mds.dictionary_info 步骤二,连接mysql删除数据: delete from mds.dictionary_info where name='mysql表名' and type=2; 步骤三,重启mysql,dbproxy进程 步骤四, 循环登录mysql,如果可以登录,根据步骤一中获取的表结构去掉mysql表的列名,重建这张表,推出循环,如果不可以登录停顿5秒继续登录,直到重建表成功推出循环。
时间: 2024-03-16 19:46:00 浏览: 63
好的,您的问题是如何用脚本实现删除 MySQL 表中的某些数据并重建该表?
以下是一个示例脚本,需要输入 MySQL 端口号、密码、IP、表名和要删除的列名,然后按照您提供的步骤执行:
```bash
#!/bin/bash
# 获取输入参数
port=$1
password=$2
ip=$3
table=$4
column=$5
# 步骤一,登录 MySQL 获取表结构
columns=$(mysql -h $ip -P $port -u root -p$password -e "DESCRIBE $table" | awk '{ print $1 }' | grep -v $column | paste -sd,)
# 步骤二,删除数据
mysql -h $ip -P $port -u root -p$password -e "DELETE FROM $table WHERE name='$table' AND type=2"
# 步骤三,重启 MySQL 和 dbproxy 进程
/etc/init.d/mysql restart
/etc/init.d/dbproxy restart
# 步骤四,循环登录并重建表
until mysql -h $ip -P $port -u root -p$password -e "CREATE TABLE $table ($columns)"; do
echo "Table creation failed, retrying in 5 seconds..."
sleep 5
done
echo "Table created successfully!"
```
请确保在脚本中填写正确的 MySQL 端口号、密码、IP、表名和要删除的列名。此外,需要在脚本所在的服务器上安装 MySQL 客户端。
阅读全文