自动化执行 SQL 脚本解决方案

ops/2025/1/15 6:46:57/

自动化执行 SQL 脚本解决方案

手动登录多个库和数据源执行 SQL 脚本非常繁琐,以下是解决此问题的几种自动化方案。


目标:让 SQL 脚本自动化执行

方案 1:使用 Python 脚本连接并执行 SQL

Python 可以通过数据库连接库(如 pyodbcpymysql)来自动化连接和执行 SQL 脚本。

Python 自动执行 SQL 脚本
import pyodbc
import time# 数据库连接配置
DATABASES = [{"name": "Database1", "dsn": "DSN1", "username": "user1", "password": "pass1"},{"name": "Database2", "dsn": "DSN2", "username": "user2", "password": "pass2"},# 按需添加更多数据库
]# SQL 脚本文件路径
SQL_FILE_PATH = "upgrade_script.sql"def execute_sql_script(connection, sql_file_path):with open(sql_file_path, "r") as file:sql_script = file.read()cursor = connection.cursor()for statement in sql_script.split(";"):  # 按分号拆分 SQL 语句if statement.strip():print(f"Executing: {statement.strip()[:50]}...")cursor.execute(statement)connection.commit()def main():for db in DATABASES:try:print(f"Connecting to {db['name']}...")connection = pyodbc.connect(f"DSN={db['dsn']};UID={db['username']};PWD={db['password']}")execute_sql_script(connection, SQL_FILE_PATH)print(f"Finished executing script on {db['name']}.")except Exception as e:print(f"Error on {db['name']}: {e}")finally:if connection:connection.close()print("All databases updated successfully!")if __name__ == "__main__":start_time = time.time()main()print(f"Execution completed in {time.time() - start_time:.2f} seconds.")
配置说明
  1. 数据库连接
    • DSN数据库的 ODBC 数据源名称。如果未配置 DSN,可以直接用 hostport 替代。
    • 替换 usernamepassword 为对应的凭据。
  2. SQL 脚本路径
    • 将升级的 SQL 脚本保存为 upgrade_script.sql 文件。
  3. 数据库类型支持
    • 针对不同数据库(如 MySQL、PostgreSQL、SQL Server),使用合适的 Python 库:
      • MySQL: 使用 pymysqlmysql-connector-python
      • PostgreSQL: 使用 psycopg2
      • SQL Server: 使用 pyodbc

方案 2:批量执行 SQL 脚本(Shell 或批处理)

如果 Python 不是首选,可以使用 Shell 或批处理文件实现。

sql__76">示例:使用 mysql 命令行工具
#!/bin/bash# 数据库配置
DATABASES=("Database1 -uuser1 -ppass1""Database2 -uuser2 -ppass2"
)# SQL 脚本路径
SQL_FILE="upgrade_script.sql"# 遍历所有数据库并执行脚本
for db in "${DATABASES[@]}"; doecho "Executing script on $db..."mysql $db < $SQL_FILE
doneecho "All databases updated successfully!"

方案 3:数据库管理工具的自动化支持

许多数据库管理工具(如 Navicat、DBeaver、DataGrip)支持批量运行 SQL 脚本,具体操作如下:

  1. 将所有数据库连接添加到工具中。
  2. 打开 SQL 脚本窗口。
  3. 配置脚本运行顺序,一次性执行。

方案 4:分布式数据库管理工具

如果项目需求频繁升级,可以考虑引入分布式数据库管理工具,比如:

  • Flyway数据库迁移工具)
  • Liquibase(版本控制和变更管理)
  • 这些工具可以让 SQL 脚本的执行更加标准化、版本化和自动化

最终效果

通过上述方案,您可以实现以下目标:

  • 节约时间:减少手动登录和执行的频率。
  • 减少出错:避免重复手动输入可能带来的操作错误。
  • 提升效率:从 40 分钟缩短到几分钟即可完成。


http://www.ppmy.cn/ops/149030.html

相关文章

地市级医院人工智能应用路线图2025:机遇、挑战与战略路径(基本版附四阶段流程)

一、引言 1.1 研究背景与意义 地市级医院作为我国医疗体系的关键组成部分,承担着为广大民众提供基础与专科医疗服务的重任。伴随人口老龄化加剧、慢性病患病率上升以及民众健康需求持续增长,地市级医院面临着前所未有的医疗服务压力。据相关数据显示,近十年我国地市级医院的…

无人机电池技术引领低空经济新篇章!

一、BMS的架构 无人机的电池管理系统通常采用多层架构设计&#xff0c;主要包括硬件层、中间层和应用层。 硬件层&#xff1a;包括电池硬件本身&#xff0c;如电池单元、温度传感器、电压传感器和电流传感器等。这些硬件组件是电池管理系统的基础&#xff0c;负责采集电池的实…

如何让用户在网页中填写PDF表格?

在网页中让用户直接填写PDF表格&#xff0c;可以大大简化填写、打印、扫描和提交表单的流程。通过使用复选框、按钮和列表等交互元素&#xff0c;PDF表格不仅让填写过程更高效&#xff0c;还能方便地在电脑或移动设备上访问和提交数据。 以下是在浏览器中显示可填写PDF表单的四…

K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法

一、K-Means 算法概述 K-Means 是一种经典的无监督学习聚类算法&#xff0c;目的是将数据集中 n 个样本划分成 K 个簇&#xff08;cluster&#xff09;&#xff0c;每个样本根据其特征被归入与之最接近的簇。简单来说&#xff0c;这就像在超市购物时&#xff0c;顾客会被根据购…

基于Spring Boot的学院商铺管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【Unity3D日常开发】Unity3D中适用WEBGL打开Window文件对话框打开/上传文件

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 Unity3D发布的WEBGL程序是不支持直接的I/O操…

优质内容在个人IP运营中的重要性:以开源AI智能名片商城小程序为应用实例的深度探讨

摘要&#xff1a;在数字化时代&#xff0c;个人品牌&#xff08;IP&#xff09;的塑造与传播已成为各行各业提升影响力、吸引用户关注、促进商业转化的关键策略。优质内容作为连接个人IP与目标受众的桥梁&#xff0c;其在个人IP运营中的重要性不言而喻。本文旨在深入探讨优质内…

【了解到的与深度学习有关知识】

深度学习&#xff08;Deep Learning, 简称DL&#xff09;是人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;领域的一个重要分支。以下是对深度学习的简单介绍&#xff1a; 一、定义与原理 深度学习是一种使计算机能够从经验中学习并以概念层次结构的…