【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 + filename
        os.environ['PGPASSWORD'] = password
        try:
            #数据库存在则删除数据库
            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']

结果示例:

相关推荐
Ares-Wang11 分钟前
负载均衡LB》》HAproxy
运维·数据库·负载均衡
AI.NET 极客圈23 分钟前
.NET 原生驾驭 AI 新基建实战系列(四):Qdrant ── 实时高效的向量搜索利器
数据库·人工智能·.net
weixin_470880261 小时前
MySQL体系架构解析(二):MySQL目录与启动配置全解析
数据库·mysql·面试·mysql体系架构·mysql bin目录
英英_2 小时前
MySQL 日志数据同步的详细教程
数据库·mysql
TDengine (老段)2 小时前
TDengine 替换 Hadoop,彻底解决数据丢失问题 !
大数据·数据库·hadoop·物联网·时序数据库·tdengine·涛思数据
南棱笑笑生2 小时前
20250605使用boot-repair来恢复WIN10和ubuntu22.04.6双系统的启动
数据库·postgresql
初次见面我叫泰隆3 小时前
Redis——1、服务端高并发分布式结构演进之路
数据库·redis·分布式
朝九晚五ฺ4 小时前
【MySQL基础】数据库的备份与还原
数据库·mysql·oracle
时序数据说4 小时前
时序数据库IoTDB的UDF Sample算法在数据监控、故障预防的应用
大数据·数据库·开源·时序数据库·iotdb
emo了小猫7 小时前
Mybatis #{} 和 ${}区别,使用场景,LIKE模糊查询避免SQL注入
数据库·sql·mysql·mybatis