当前位置: 首页 > article >正文

高斯数据库 Shell 脚本:批量执行 SQL 文件

高斯数据库 Shell 脚本:批量执行 SQL 文件

优化后的高斯数据库 Shell 脚本

#!/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; do
    # 确保读取的字段完整
    if [[ -z "$HOST" || -z "$PORT" || -z "$USER" || -z "$PASSWORD" ]]; then
        echo "数据库信息文件格式不正确,跳过行:$HOST $PORT $USER"
        continue
    fi

    echo "连接到数据库服务器 $HOST:$PORT..."

    # 构造 zsql 命令
    CONNECTION_STRING="${USER}\\${PASSWORD}@${HOST}:${PORT}"
    zsql "$CONNECTION_STRING" -a -f "$SQL_FILE"

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

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

done < "$DB_INFO_FILE"

数据库信息文件 (db_info.txt)

此文件包含数据库服务器信息,每行一个实例:

192.168.1.100 5432 myuser mypassword
192.168.1.101 5432 myuser mypassword
192.168.1.102 5432 myuser mypassword

每列表示:

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

SQL 文件 (create_table.sql)

示例 SQL 文件,内容如下:

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

脚本执行方式

  1. 确保脚本有执行权限:

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

    ./create_table_gaussdb.sh
    

脚本功能说明

  1. 读取 db_info.txt 文件:逐行读取数据库服务器的连接信息。
  2. 生成连接字符串:根据 USER\\PASSWORD@HOST:PORT 格式构造 GaussDB 的 zsql 连接命令。
  3. 执行 SQL 文件:通过 -f 参数指定 SQL 文件路径,并在服务器上运行。
  4. 结果检查:通过 $? 检查 zsql 命令的执行结果,并在终端打印成功或失败信息。

输出示例

成功执行时,终端会显示类似以下信息:

连接到数据库服务器 192.168.1.100:5432...
SQL 文件已成功执行到 192.168.1.100:5432。
--------------------------------------
连接到数据库服务器 192.168.1.101:5432...
SQL 文件已成功执行到 192.168.1.101:5432。
--------------------------------------
连接到数据库服务器 192.168.1.102:5432...
SQL 文件已成功执行到 192.168.1.102:5432。
--------------------------------------

改进点

  1. 移除了 DATABASE 参数,直接对服务器执行 SQL 文件。
  2. 兼容无数据库名称的执行方式
  3. 保持脚本灵活性,可根据不同环境快速调整。


http://www.kler.cn/a/509541.html

相关文章:

  • AI 大爆发时代,音视频未来路在何方?
  • 【逆境中绽放:万字回顾2024我在挑战中突破自我】
  • MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解
  • 【Go】Go数据类型详解—指针
  • python mysql库的三个库mysqlclient mysql-connector-python pymysql如何选择,他们之间的区别
  • XML在线格式化 - 加菲工具
  • C++ 成员初始化列表
  • 二、点灯基础实验
  • Unreal Engine 5 C++ Advanced Action RPG 九章笔记
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
  • 搜维尔科技提供完整的人形机器人解决方案以及训练系统
  • 机器学习加州房价预测模型报告
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 13-1类与对象
  • 【21】Word:德国旅游业务❗
  • 游戏引擎学习第81天
  • 探索 Transformer²:大语言模型自适应的新突破
  • wow-agent---task2使用llama-index创建Agent
  • Ubuntu 空闲硬盘挂载到 文件管理器的 other locations
  • Apache 如何设置 Upgrade-Insecure-Requests 报头 ?
  • 用于零镜头视频对象分割的深度感知测试时训练
  • PyTorch基本功能与实现代码
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
  • vector迭代器的使用以及迭代器失效
  • 非科班转码第5年零241天
  • STM32 物联网智能家居 (五) 设备子系统之点亮LED灯