mysq批量导入脚本
备份文件目录结构
数据库1(文件夹)文件夹名称即为数据库名
表1(文件夹)文件夹名称即为表名
structure.sql(表结构)
data(数据文件夹)
*.sql(备份文件)
#!/bin/bash # MySQL数据库登录信息 mysql_user="root" mysql_password="cfea3389c8db098f" mysql_host="localhost" mysql_port=3306 # 备份文件夹所在目录 backup_dir="/home/back" # 检查备份文件夹所在目录是否存在且非空 if [[ ! -d "${backup_dir}" ]]; then echo "备份文件夹所在目录 ${backup_dir} 不存在。" >&2 exit 1 elif [[ -z "$(ls -A "${backup_dir}")" ]]; then echo "备份文件夹所在目录 ${backup_dir} 是空的。" >&2 exit 1 fi # 遍历备份文件夹 for backup_folder in "${backup_dir}"/*; do # 定义 MySQL 数据库名称为备份文件夹名称 mysql_db_name="$(basename "${backup_folder}")" # 检查备份文件夹是否存在且非空 if [[ ! -d "${backup_folder}" ]]; then echo "备份文件夹 ${backup_folder} 不存在。" >&2 continue elif [[ -z "$(ls -A "${backup_folder}")" ]]; then echo "备份文件夹 ${backup_folder} 是空的。" >&2 continue fi # 测试 MySQL 连接 echo "测试 MySQL 连接..." if ! mysql -u${mysql_user} -p${mysql_password} -h${mysql_host} -P${mysql_port} ${mysql_db_name} -e ";" ; then echo "无法连接到 MySQL 数据库 ${mysql_db_name},正在创建数据库..." if ! mysql -u${mysql_user} -p${mysql_password} -h${mysql_host} -P${mysql_port} -e "CREATE DATABASE ${mysql_db_name}" ; then echo "无法创建数据库 ${mysql_db_name}。" >&2 continue fi fi echo "MySQL 连接成功!" # 导入表结构 echo "正在导入表结构..." for file in "${backup_folder}"/*/*.sql; do if [[ "${file}" == *"structure.sql" ]]; then # 使用结构文件 echo "导入文件 ${file} ..." mysql -u${mysql_user} -p${mysql_password} -h${mysql_host} -P${mysql_port} ${mysql_db_name} < "${file}" echo "导入完成!" fi done echo "表结构导入完成!" # 导入数据 echo "正在导入数据..." for file in "${backup_folder}"/*/data/*.sql; do if [[ "${file}" != *"structure.sql" ]]; then # 排除结构文件 echo "导入文件 ${file} ..." if ! mysql -u${mysql_user} -p${mysql_password} -h${mysql_host} -P${mysql_port} ${mysql_db_name} < "${file}" ; then echo "导入文件 ${file} 失败。" >&2 continue fi echo "导入完成!" fi done echo "所有数据已导入成功!" done