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

【Postgres_Python】使用python脚本批量创建和导入多个PG数据库

之前批量创建和导入数据库分为2个python脚本进行,现整合优化代码合并为一个python脚本,可同步实现数据库的创建和数据导入。之前的文章链接:

【Postgres_Python】使用python脚本批量创建PG数据库
【Postgres_Python】使用python脚本将多个.SQL文件批量导入不同的PG数据库

示例代码说明:

有多个.sql格式的数据库需要导入,数据库名与文件名一致。 先判断服务器中数据库是否存在,若存在则删除,创建数据库,导入SQL文件内容

import psycopg2
import subprocess
import os
folder_path = 'E:/Dataset/chongqinghq/'
# 获取文件夹下所有文件和文件夹的名称
filenames = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
# 遍历文件列表并以.提取名称
for filename in filenames:name_parts = filename.split('.')if name_parts:# 提取第一部分作为提取的名称,创建的数据库名称database_name = name_parts[0]username = 'postgres'password = 'postgres'host = 'localhost'port = '5432'output_file = folder_path + filenameos.environ['PGPASSWORD'] = passwordtry:#数据库存在则删除数据库commanddelete = f'D:/Program Files/PostgreSQL/10/bin/psql -h {host} -p {port} -U {username}  -c "DROP DATABASE IF EXISTS {database_name}"'subprocess.run(commanddelete, check=True)print(f"Database {database_name} dropped successfully.")# 创建数据库commandcreate = f'D:/Program Files/PostgreSQL/10/bin/psql -h {host} -p {port} -U {username}  -c "create database {database_name}"'subprocess.run(commandcreate, check=True)print(f"Database {database_name} successfully create")# 导入数据库commandimport = f'D:/Program Files/PostgreSQL/10/bin/psql -h {host} -p {port} -U {username} -d {database_name} -f {output_file}'subprocess.run(commandimport, check=True)print(f"Database {database_name} on host {host} and port {port} successfully created and imported")finally:# 清除环境变量以防止密码泄露del os.environ['PGPASSWORD']

结果示例:

http://www.lryc.cn/news/526278.html

相关文章:

  • Ubuntu安装GitLab
  • 网络知识小科普--5
  • JavaScript学习记录23
  • VScode 开发 Springboot 程序
  • .git/hooks/post-merge 文件的作用
  • Kafak 单例生产者实现-C#操作
  • Cursor开发前端的详细过程
  • 基于微信小程序的移动学习平台的设计与实现(LW+源码+讲解)
  • atheris从安装到fuzz输入输出解读
  • 「 机器人 」系统辨识实验浅谈
  • 基于Flask的哔哩哔哩评论数据可视化分析系统的设计与实现
  • [央企大赛 2025] pwn
  • C语言初阶--折半查找算法
  • Python!从0开始学爬虫:(一)HTTP协议 及 请求与响应
  • [ Spring ] Spring Cloud Gateway 2025 Comprehensive Overview
  • 【项目初始化】自定义异常处理
  • Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决
  • 【嵌入式】总结——Linux驱动开发(三)
  • 计算机图形学:实验三 光照与阴影
  • 「 机器人 」扑翼飞行器混合控制策略缺点浅谈
  • 蓝桥杯算法日常|c\c++常用竞赛函数总结备用
  • 每日十题八股-2025年1月24日
  • tomcat的accept-count、max-connections、max-threads三个参数的含义
  • 【无标题】mysql python 连接
  • linux naive代理设置
  • [STM32 - 野火] - - - 固件库学习笔记 - - -十一.电源管理系统
  • DBO优化最近邻分类预测matlab
  • 【深入理解FFMPEG】命令行阅读笔记
  • 图形化数据报文转换映射工具
  • 智能体0门槛开发