使用python将Excal表格数据批量导入PostgreSQL数据库

使用Python中的psycopg2库来操作PostgreSQL数据库是一个常见的任务。以下是一个完整的示例,包括安装必要的包、建立和关闭连接、执行增删改查操作以及处理可能的异常。

1.环境准备


安装必要的包:

  1. pandas:用于读取Excel文件并处理数据。
  2. openpyxl 或者 xlrd:pandas读取Excel文件所需的库。
  3. psycopg2:Python访问PostgreSQL数据库的适配器。
pip install pandas
pip install psycopg2
pip install openpyxl

 (注:如果您使用的是openpyxl,则只能读写.xlsx文件;如果使用的是xlrd,则可以读取.xls.xlsx文件。当处理.xls文件时需要安装xlrd库)

pip install xlrd

 2.编写脚本

步骤1:读取Excel文件
步骤2:连接PostgreSQL数据库
步骤3:确定数据库中的表格,将excal文件中的表格列与数据库中的列对应。

import pandas as pd
import psycopg2




def read_excel(file_path):
    # 使用 pandas 读取 Excel 文件
    df = pd.read_excel(file_path)
    return df                
       # def read_excel(file_path):  #导入文件为.xls文件
       #  df = pd.read_excel(file_path, engine='xlrd')
       # return df

def connect_to_db(host, database, user, password):
    # 建立数据库连接
    conn = psycopg2.connect(
        host=host,
        database=database,
        user=user,
        password=password
    )
    return conn


def create_table_if_not_exists(conn, table_name, columns):
    # 获取一个游标
    cur = conn.cursor()

    # 创建表的SQL语句
    create_table_sql = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})"

    # 执行创建表的SQL语句
    cur.execute(create_table_sql)

    # 提交事务
    conn.commit()

    # 关闭游标
    cur.close()


def insert_into_db(df, conn, table_name):
    # 将 DataFrame 转换为 SQL 插入语句
    for _, row in df.iterrows():
        insert_sql = f"INSERT INTO {table_name} (name, x, y, z, r) VALUES (%s, %s, %s, %s, %s)"
        conn.cursor().execute(insert_sql, (row['名称'],row['X'], row['Y'], row['Z'], row['R']))

    # 提交事务
    conn.commit()


def main():
    # Excel 文件路径
    excel_file = 'E:\xxx\xxxx\xxxx/shuju.xlsx'

    # PostgreSQL 数据库连接参数
    host = '127.0.0.1'  # PostgreSQL 服务器地址
    database = 'xxxx' # 数据库名称
    user = 'xxxxx'  # 用户名
    password = 'xxxxx'  # 密码

    # 数据表名
    table_name = 't_xxxx'
  
    # 读取 Excel 文件中的数据
    data_frame = read_excel(excel_file)

    # 获取数据库连接
    conn = connect_to_db(host, database, user, password)


    # 插入数据到数据库
    insert_into_db(data_frame, conn, table_name)

    # 关闭数据库连接
    conn.close()

if __name__ == "__main__":
    main()

3. 基本的增删改查操作

在连接到数据库后,可以执行基本的SQL操作,如插入、查询、更新和删除数据。
可参考:
Python操作PostgreSQL指南_python postgresql-CSDN博客

你可能感兴趣的:(python,数据库,postgresql)