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

devtools/2025/1/17 5:01:01/

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

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

#!/bin/bash# 数据库信息文件路径
DB_INFO_FILE="db_info.txt"# 要执行的 SQL 文件
SQL_FILE="create_table.sql"# 检查数据库信息文件是否存在
if [[ ! -f "$DB_INFO_FILE" ]]; thenecho "数据库信息文件 $DB_INFO_FILE 不存在!"exit 1
fi# 检查 SQL 文件是否存在
if [[ ! -f "$SQL_FILE" ]]; thenecho "SQL 文件 $SQL_FILE 不存在!"exit 1
fi# 遍历数据库信息文件
while read -r HOST PORT USER PASSWORD; do# 确保读取的字段完整if [[ -z "$HOST" || -z "$PORT" || -z "$USER" || -z "$PASSWORD" ]]; thenecho "数据库信息文件格式不正确,跳过行:$HOST $PORT $USER"continuefiecho "连接到数据库服务器 $HOST:$PORT..."# 构造 zsql 命令CONNECTION_STRING="${USER}\\${PASSWORD}@${HOST}:${PORT}"zsql "$CONNECTION_STRING" -a -f "$SQL_FILE"# 检查执行结果if [[ $? -eq 0 ]]; thenecho "SQL 文件已成功执行到 $HOST:$PORT。"elseecho "SQL 文件执行到 $HOST:$PORT 失败!"fiecho "--------------------------------------"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_69">SQL 文件 (create_table.sql)

示例 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.ppmy.cn/devtools/151177.html

相关文章

ubuntu Android : adb logcat 过滤多个log

指定字符串的log&#xff0c;可以用下面的形式&#xff0c;注意加-E和单引号&#xff1a; adb shell " logcat | grep -E strings1|strings2 " 参考&#xff1a;Android : adb logcat 过滤多个log 用adb shell “ logcat | grep -E ‘strings1| strings2 ‘ “ 形…

【React】新建React项目

目录 create-react-app基础运用React核心依赖React 核心思想&#xff1a;数据驱动React 采用 MVC体系package.jsonindex.html好书推荐 官方提供了快速构建React 项目的脚手架&#xff1a; create-react-app &#xff0c;目前使用它安装默认是19版本&#xff0c;我们这里降为18…

Redis雪崩以及解决方法

概述&#xff1a; Redis中大量缓存数据在同一时间过期&#xff08;失效&#xff09;或者Redis故障宕机时&#xff0c;如果此时有大量的用户请求&#xff0c;都无法在Redis中处理&#xff0c;于是全部请求都直接访问数据库&#xff0c;从而导致数据库的压力骤增&#xff0c;严重…

构建高效的进程池:深入解析C++实现

构建高效的进程池&#xff1a;深入解析C实现 在高性能计算和服务器应用中&#xff0c;进程池&#xff08;Process Pool&#xff09;是一种重要的设计模式。它通过预先创建和维护一定数量的子进程来处理大量的任务请求&#xff0c;从而避免频繁地创建和销毁进程带来的开销。本文…

Ubuntu无法进入图像化界面

目录 1.情况介绍 2.安装ubuntu-session 3.重装显卡驱动 4.后记 1.情况介绍 使用timeshift创建系统快照的时候中途暂停&#xff0c;然后重启系统&#xff0c;系统无法进入图形化界面&#xff0c;出错的现象如下。 2.安装ubuntu-session 键盘操作&#xff1a;CtrlAltF2&#…

4种革新性AI Agent工作流设计模式全解析

导读:AI Agent是指能够在特定环境中自主执行任务的人工智能系统,不仅接收任务,还自主制定和执行工作计划,并在过程中不断自我评估和调整,类似于人类在创造性任务中的思考和修正过程。AI Agent的四种关键设计模式是实现高效执行复杂任务的基础,共同构成了AI Agent的能力框…

软件测试预备知识⑤—搭建 DNS 服务器

在软件测试领域&#xff0c;有时候我们需要搭建一些特定的服务器环境来模拟真实的网络场景&#xff0c;以便更好地进行测试工作。DNS 服务器就是其中一个重要的组件&#xff0c;它负责将域名解析为对应的 IP 地址&#xff0c;使得我们能够通过域名访问各种网络资源。今天&#…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…