32人参与 • 2025-08-13 • Powershell
首先准备一个包含三个 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
每行表示一个数据库,字段顺序为:
编写以下脚本,命名为 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"
准备一个示例 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 );
为脚本赋予执行权限:
chmod +x create_tables.sh
执行脚本:
./create_tables.sh
db_info.txt
文件中的数据库信息。mysql
命令连接。create_table.sql
中的 sql 语句。连接到数据库 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 文件执行操作!
到此这篇关于使用shell脚本操作多个mysql数据库的步骤详解的文章就介绍到这了,更多相关shell脚本操作多个mysql数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论