自学内容网 自学内容网

使用 Shell 脚本操作多个 MySQL 数据库

使用 Shell 脚本操作多个 MySQL 数据库

步骤 1: 数据库信息文件

首先准备一个包含三个 MySQL 数据库信息的文件,例如 db_info.txt。文件内容如下:

192.168.1.100 3306 root rootpassword1 database1
192.168.1.100 3307 root rootpassword2 database2
192.168.1.100 3308 root rootpassword3 database3

每行表示一个数据库,字段顺序为:

  1. 主机地址
  2. 端口号
  3. 用户名
  4. 密码
  5. 数据库名称

步骤 2: 创建 Shell 脚本

编写以下脚本,命名为 create_tables.sh

#!/bin/bash

# 数据库信息文件路径
DB_INFO_FILE="db_info.txt"

# 要执行的 SQL 文件
SQL_FILE="create_table.sql"

# 检查数据库信息文件是否存在
if [[ ! -f "$DB_INFO_FILE" ]]; then
    echo "数据库信息文件 $DB_INFO_FILE 不存在!"
    exit 1
fi

# 检查 SQL 文件是否存在
if [[ ! -f "$SQL_FILE" ]]; then
    echo "SQL 文件 $SQL_FILE 不存在!"
    exit 1
fi

# 遍历数据库信息文件
while read -r HOST PORT USER PASSWORD DATABASE; do
    # 确保读取的字段完整
    if [[ -z "$HOST" || -z "$PORT" || -z "$USER" || -z "$PASSWORD" || -z "$DATABASE" ]]; then
        echo "数据库信息文件格式不正确,跳过行:$HOST $PORT $USER $DATABASE"
        continue
    fi

    echo "连接到数据库 $DATABASE ($HOST:$PORT)..."

    # 使用 mysql 命令执行 SQL 文件
    mysql -h "$HOST" -P "$PORT" -u "$USER" -p"$PASSWORD" "$DATABASE" < "$SQL_FILE"

    # 检查执行结果
    if [[ $? -eq 0 ]]; then
        echo "SQL 文件已成功执行到 $DATABASE。"
    else
        echo "SQL 文件执行到 $DATABASE 失败!"
    fi

    echo "--------------------------------------"

done < "$DB_INFO_FILE"

步骤 3: 创建 SQL 文件

准备一个示例 SQL 文件 create_table.sql,内容如下:

CREATE TABLE IF NOT EXISTS example_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

步骤 4: 设置脚本权限并执行

  1. 为脚本赋予执行权限:

    chmod +x create_tables.sh
    
  2. 执行脚本:

    ./create_tables.sh
    

执行流程:

  1. 脚本会读取 db_info.txt 文件中的数据库信息。
  2. 遍历每个数据库,并通过 mysql 命令连接。
  3. 对每个数据库执行 create_table.sql 中的 SQL 语句。
  4. 显示每个数据库的执行结果。

示例输出:

连接到数据库 database1 (192.168.1.100:3306)...
SQL 文件已成功执行到 database1。
--------------------------------------
连接到数据库 database2 (192.168.1.100:3307)...
SQL 文件已成功执行到 database2。
--------------------------------------
连接到数据库 database3 (192.168.1.100:3308)...
SQL 文件已成功执行到 database3。
--------------------------------------

这样,脚本可以灵活地从文件中读取多个数据库信息,并完成指定的 SQL 文件执行操作!



原文地址:https://blog.csdn.net/weixin_43810067/article/details/145127476

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!