【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']
结果示例:
原文地址:https://blog.csdn.net/liudan19940618/article/details/145291654
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!