mysql备份表行数少于一定数量的表

-- 设置数据库连接

USE your_database_name;

 

-- 查询每个表的行数

SELECT table_name, table_rows

FROM information_schema.tables

WHERE table_schema = 'your_database_name';

 

-- 假设我们要备份行数少于1000的表

-- 您可以将此值替换为您的具体数值

SET @min_row_count := 1000;

 

-- 动态构建备份命令

SELECT CONCAT('mysqldump -u your_username -p your_database_name ', table_name, ' > backup_', table_name, '.sql') AS backup_command

FROM information_schema.tables

WHERE table_schema = 'your_database_name'

AND table_rows < @min_row_count;

 

 

--------------------------------------下方是shell命令:

#!/bin/bash

 

# MySQL 用户信息

USER="your_username"

PASSWORD="your_password"

HOST="your_host"

DB_NAME="your_database_name"

 

# 行数阈值

MIN_ROWS=1000

 

# 输出文件夹

BACKUP_DIR="/path/to/your/backup/directory"

 

# 连接MySQL并备份行数少于MIN_ROWS的表

mysql -u $USER -p$PASSWORD -h $HOST $DB_NAME -e "SHOW TABLES" | grep -v 'Tables_in' | while read TABLE; do

    ROWS=$(mysql -u $USER -p$PASSWORD -h $HOST -s -D $DB_NAME -e "SELECT COUNT(*) FROM $TABLE")

    if [ "$ROWS" -lt "$MIN_ROWS" ]; then

        echo "Backing up table $TABLE with $ROWS rows"

        mysqldump -u $USER -p$PASSWORD -h $HOST $DB_NAME $TABLE > "$BACKUP_DIR/${TABLE}_${ROWS}.sql"

    fi

done

默认分类 2024-03-13 20:03:26 通过 网页 浏览(639)

共有0条评论!

发表评论

更换一道题!
放大的图片