PostgreSQL 多个库批量执行脚本

        有这样的一个业务场景。在一个数据库实例上面有差不多 80 多个数据库 DATABASE,现在有一个需求,有一个脚本文件 .sql 需要在这 80 多个数据库上都执行一遍,那么有没有什么简单的方法可以实现。

[root@localhost ~]#
[root@localhost ~]# su - postgres
[postgres@localhost ~]$ vi batch_execute_script.sh
#!/bin/bashHOST="192.168.30.140"
PORT="5432"
USER="postgres"
PASSWORD="Centos@2024"
export PGPASSWORD=${PASSWORD}
/usr/local/pgsql-12.8/bin/psql -h $HOST -p $PORT -U $USER -d postgres -c "SELECT datname FROM pg_database WHERE datname like 'cloud%';" | tail -n +3 | head -n -2 > datname.txt
for i in `cat datname.txt`
do
/usr/local/pgsql-12.8/bin/psql -h $HOST -p $PORT -U $USER -d $i -f /usr/local/src/test.sql -o i.log
done#cat datname.txt | while while read line;
#do
#    echo $line
#    /usr/local/pgsql-12.8/bin/psql -h $HOST -p $PORT -U $USER -d $line -f /usr/local/src/test.sql -o out.log
#done[root@localhost ~]# touch /usr/local/src/test.sql
[root@localhost ~]# chmod 755 /usr/local/src/test.sql
[root@localhost ~]# vi /usr/local/src/test.sql
CREATE TABLE "public"."mb_user" ("user_id" int8 NOT NULL,"user_name" varchar(30),"user_type" varchar(32),"telephone" varchar(30),"gender" varchar(5),"logic_state" varchar(16) DEFAULT 0,"create_time" timestamp(6),"password" varchar(255),"hospital_id" int8,"client_id" varchar(64),"birth" timestamp(6),"head_img" varchar(2000),"user_code" varchar(50),PRIMARY KEY ("user_id")
);ALTER TABLE "public"."mb_user" OWNER TO "postgres";
COMMENT ON COLUMN "public"."mb_user"."user_name" IS '用户姓名';
COMMENT ON COLUMN "public"."mb_user"."logic_state" IS '逻辑状态';
COMMENT ON COLUMN "public"."mb_user"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."mb_user"."password" IS '用户密码';
COMMENT ON COLUMN "public"."mb_user"."hospital_id" IS '默认操作医院';
COMMENT ON COLUMN "public"."mb_user"."client_id" IS '个推CID';
COMMENT ON COLUMN "public"."mb_user"."birth" IS '出生年月';
COMMENT ON COLUMN "public"."mb_user"."head_img" IS '头像';[postgres@localhost ~]$ chmod +x batch_execute_script.sh
[postgres@localhost ~]$ dos2unix batch_execute_script.sh
[postgres@localhost ~]$ sh batch_execute_script.sh在数据库实例对应的数据库下去查看脚本是否已执行
[postgres@localhost ~]$ /usr/local/pgsql-12.8/bin/psql -h localhost
postgres=# \c cloud_health
cloud_health=# \dList of relationsSchema |  Name   | Type  |  Owner
--------+---------+-------+----------public | mb_user | table | postgres
(1 row)cloud_health=#cloud_health=# \c cloud_test
cloud_test=# \dList of relationsSchema |             Name              |       Type        |  Owner
--------+-------------------------------+-------------------+----------public | cloud_backup_test             | table             | postgrespublic | cloud_backup_test_id_seq      | sequence          | postgrespublic | deps_saved_ddl                | table             | postgrespublic | deps_saved_ddl_deps_id_seq    | sequence          | postgrespublic | mb_user                       | table             | postgrespublic | partition_table               | partitioned table | postgrespublic | partition_table_202201        | table             | postgrespublic | partition_table_202202        | table             | postgrespublic | partition_table_id_seq        | sequence          | postgrespublic | patient_registration          | table             | postgrespublic | patient_registration_20231219 | table             | postgrespublic | patient_registration_20231220 | table             | postgrespublic | patient_registration_id_seq   | sequence          | postgrespublic | user_history                  | table             | postgrespublic | user_history_id_seq           | sequence          | postgrespublic | view_test                     | table             | postgrespublic | vw_view_testa                 | view              | postgrespublic | vw_view_testb                 | view              | postgres
(18 rows)cloud_test=#[postgres@localhost ~]$ cat datname.txt
[postgres@localhost ~]$ cat i.log

说明:在当前目录下会有这样的一个文件 datname.txt 显示了有哪些数据库执行了这个脚本文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车机安装第三方软件实现打开软件全屏教程

简介 越来越多的车友实现安装第三方软件了,但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话,第三方软件就会显示不全,体验感非常不好。所以,下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…

CLion配置QT开发环境

一、将qmake工程转为cmake工程(方法一:用工具转换并做适当修改) 1、工具链接:链接:https://pan.baidu.com/s/1grW2QY3sW8X2JaHWM_ePPw 提取码:7at4 工具源码:https://github.com/milahu/qmake2cmake 2、执行…

第3章-需求 3.4 需求的合法合规性审查

3.4 需求的合法合规性审查 3.4.1 项目需求的合法性审查3.4.2 委托研发项目的法律问题3.4.3 项目实施过程中的知识产权问题1.开发成果的知识产权保护2.开发过程中的侵权风险防控 近年来随着依法治国的深度开展,企业合规的概念越来越多地出现在大众眼前,也…

怎么保护源代码,源代码防泄密的十种方法

在现代软件开发中,源代码被视为企业的“数字资产”,它不仅承载着企业的核心竞争力,更是推动技术创新和业务发展的基石。然而,随着信息技术的普及和开发环境的复杂化,源代码泄密的风险也在不断增加。保护源代码的安全已…

单相锁相环,原理与Matlab实现

单相锁相环基本原理 单相锁相环的基本原理图如下所示, u α u_\alpha uα​ u β u_\beta uβ​经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异,主要表现在正交电压 u β u_\beta uβ​的生成&#x…

腾讯云双十一福利篇之CVM云服务器

🍋引言 随着企业数字化转型的不断深入,对云计算的需求日益增长。腾讯云推出的云服务器(CVM)为企业提供了一种灵活、高效、经济的计算服务解决方案。CVM云服务器不仅能够快速响应业务需求,还可以帮助企业降低前期硬件投…

DDei在线设计器-国际化

国际化 从1.2.42版开始,DDei提供了国际化支持。默认提供了中文/英文两种语言。 编辑器会读取浏览器的语言设置,也能够在初始化时强行指定,默认使用zh_CN(中文)。 本示例基于教程快速指南开发,如果您不清楚怎样引入DDei设计器,请查…

NUXT3学习日记一(在我git中拉取代码、文件讲解)

Nuxt 3 是一个基于 Vue 3 的现代框架,用于构建服务器端渲染(SSR)和静态生成的应用程序。它提供了一种简化的方式来创建高性能的 Vue 应用,具有许多强大的功能和优点。以下是 Nuxt 3 的一些主要应用和优点: 一、应用场…

小米路由器3(R3)安装mixbox命令

sh -c /extdisks/sda1/ftp/install.sh && source /etc/profile &> /dev/null install.sh文件 或者在目录新建一个粘贴 #!/bin/sh -e #copyright by monlorclear logsh() {# 输出信息到/tmp/messages和标准输出logger -s -p 1 -t "$1" "$2&quo…

DAY27|贪心算法Part01|LeetCode:455.分发饼干、376. 摆动序列、53. 最大子序和

贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心算法并没有固定的套路,最难想的就在于如何通过局部最优去推出全局最优。在做一个题目的时候,靠自己手动模拟,如果模拟可行,就可以试一试贪心策略…

“反卷”风暴席卷双十一,商家们却卖爆了

文丨郭梦仪 11月12日零点,第16届双11落下帷幕,但商家的故事依然在继续。 “今年双11,没想到能月入千万,流量上升了200%。”乐尘家居主理人子旭向商业数据派表示,他今年最明显的感受是,认真经营的人在这个…

OCCT7.7.0 使用VTK9.2.0

1.前言 OCCT使用的VTK版本是VTK6.1.0,这个版本已经比较老了,如果要使用新版本的VTK,则需要自己引入新版本VTK,自己编译,我这里也比较好奇,为什么OCCT不升级一下VTK版本,下面自己来引入VTK9.2.0…

STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

《火灾报警系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。 项目资料领取https://s.c1ns.cn/F5XyU STM32项目实战之“火灾报警系统”(基于STM32U5) 今天小编来分享一个《火灾报警系统》的项目案例,硬件平台是STM…

C++初阶 --- 类和对象(1)

类和对象(1) 一、类的相关内容1.访问限定符2.class关键字与struct关键字的区别3.类域 二、this指针三、成员函数存放在哪里?1. 函数的存放位置2. 练习题 一、类的相关内容 1.访问限定符 (1)C⼀种实现封装的⽅式&…

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面,每个页…

Github配置ssh key原理及操作步骤

文章目录 配置SSH第一步:检查本地主机是否已经存在ssh key第二步:生成ssh key第三步:获取ssh key公钥内容第四步:Github账号上添加公钥第五步:验证是否设置成功验证原理 往github上push项目的时候,如果走ht…

爬虫学习8

Frida是一个动态代码插桩工具,允许开发者在运行时修改和调试应用程序 import ...:这行代码表示导入所需的模块或库,但具体的导入内容在图片中被省略了。 rdev frida.get_remote_device():这行代码获取一个远程设备实例&#xff…

【动手学电机驱动】STM32-FOC(6)基于 IHM03 的无感方波控制

STM32-FOC(1)STM32 电机控制的软件开发环境 STM32-FOC(2)STM32 导入和创建项目 STM32-FOC(3)STM32 三路互补 PWM 输出 STM32-FOC(4)IHM03 电机控制套件介绍 STM32-FOC(5&…

图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法

图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法 图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法 引言图像采集YOLOv10目标检测图像匹配1.计算两张图像的灰度直方图相似性2. RGB通道分离后的直方图相似度计算3. 感知哈希算法3. 均值哈希算…

POI word转pdf乱码问题处理

1.使用poi 转换word文档成pdf 导入依赖 <dependency><groupId>com.aspose</groupId><artifactId>words</artifactId><version>16.8.0</version></dependency>2.代码实现: SneakyThrowspublic void wordToPdf(String docPath,…