turato 发表于 2024-8-7 13:14

【shell脚本】删除目标数据库中的所有表

功能:删除目标MySQL数据库的所有表
使用步骤:
1、将脚本保存为 delete_mysql_tables.sh,并赋予执行权限:
`chmod +x delete_mysql_tables.sh`

2、执行脚本时,提供数据库名称作为参数:
`./delete_mysql_tables.sh your_database_name`

全部代码:
```sh
#!/bin/bash

# 定义常量
MYSQL_HOST="xxxxxx.mysql.rds.aliyuncs.com"
MYSQL_USER="test"
MYSQL_PASSWORD="123456"
MYSQL_CMD="mysql"

# 检查是否提供了数据库名称作为参数
if [ -z "$1" ]; then
    echo "Usage: $0 <database_name>"
    exit 1
fi

# 定义数据库名称变量
MYSQL_DB_NAME="$1"

# 函数:执行 MySQL 命令并捕获输出
execute_mysql_cmd() {
    local cmd="$1"
    $MYSQL_CMD -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -D "$MYSQL_DB_NAME" -e "$cmd"
}

# 函数:获取所有表的名称
get_tables() {
    execute_mysql_cmd "SHOW TABLES;" | awk 'NR>1 {print $1}'
}

# 函数:删除表
delete_table() {
    local table="$1"
    echo "Deleting table: $table"
    execute_mysql_cmd "DROP TABLE IF EXISTS $table;"
}

# 获取所有表的名称
tables=$(get_tables)

# 循环删除每个表
for table in $tables; do
    delete_table "$table"
done

echo "All tables have been deleted from database: $MYSQL_DB_NAME"
```
页: [1]
查看完整版本: 【shell脚本】删除目标数据库中的所有表