1、bash脚本手动清空mysql表数据
#!/bin/bash
MYSQL_USER = "root"
MYSQL_PASSWORD = "123456"
MYSQL_HOST = "localhost"
DATABASES = ( "hps-base:base_test_item"
) LOG_FILE = "./cleanup_$( date +%Y%m%d_%H%M%S) .log"
echo "清理日志已创建: $LOG_FILE " | tee -a $LOG_FILE
check_mysql ( ) { mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SELECT 1;" &> /dev/nullif [ $? -ne 0 ] ; then echo "错误: 无法连接到MySQL服务器" | tee -a $LOG_FILE exit 1 fi
} escape_db_name ( ) { local db_name = "$1 " echo "\` $db_name\ ` "
}
cleanup_db ( ) { local raw_db_name = $1 local db_name = $( escape_db_name "$raw_db_name " ) local tables_str = $2 IFS = ',' read -r -a tables <<< "$tables_str " echo "========== 正在清理数据库: $db_name ==========" | tee -a $LOG_FILE mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SET FOREIGN_KEY_CHECKS=0;" 2 >> $LOG_FILE for table in "${tables[ @] } " ; do if [ "$table " == "*" ] ; then echo "清空数据库 $db_name 所有表..." | tee -a $LOG_FILE ALL_TABLES = $( mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -N -B -e "SHOW TABLES FROM $db_name " ) for t in $ALL_TABLES ; do echo "TRUNCATE TABLE $db_name .$t " | tee -a $LOG_FILE mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "TRUNCATE TABLE $db_name .$t " 2 >> $LOG_FILE done else echo "清空表 $db_name .$table " | tee -a $LOG_FILE mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "TRUNCATE TABLE $db_name .$table " 2 >> $LOG_FILE fi done mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SET FOREIGN_KEY_CHECKS=1;" 2 >> $LOG_FILE
}
main ( ) { check_mysqlfor db_config in "${DATABASES[ @] } " ; do IFS = ':' read -r db_name db_tables <<< "$db_config " cleanup_db "$db_name " "$db_tables " done echo "清理完成,日志保存在: $LOG_FILE " | tee -a $LOG_FILE
} main