Python读取excle文件,插入到数据库

 一、需求背景

        最近项目实践过程中遇到了一个问题:在使用Navicat将数据导入到PostgreSQL数据库时,发现时间格式的字段中的时间数值发生了变化,导致部分数据的时间不正确,故数据手动导入数据库报错。为了解决这个问题,决定编写Python代码来读取Excel文件,并将数据逐行插入到目标数据库中,以确保时间数据的准确性。

二、实践流程

  1. 确保已安装所需的Python库(如pandaspsycopg2),用于处理Excel文件和连接PostgreSQL数据库。

  2. 准备要导入的Excel文件,确保其中的时间字段格式正确,并且包含需要导入的数据。

  3. 编写Python脚本来执行数据导入操作。

三、代码实践

import psycopg2
import pandas as pd

# 连接数据库
conn = psycopg2.connect(database='jiangyu_01', user='bigdata', password='postgres', host='192.168.22.168', port='1234')
cur = conn.cursor()

# 读取Excel文件并更新数据库中的数据
def synonym():
    data_xls = pd.read_excel('new.xlsx', usecols=[0, 5], Sheetname='news')  # 读取Excel文件中的两列数据,Sheet名为'news'
    print(len(data_xls))
    for data in data_xls.values:
        sql = """UPDATE public.jiaozheng_dataxx SET upload_time='{}' WHERE id={}""".format(data[1], data[0])
        cur.execute(sql)
        conn.commit()

def get_dataset():
    # 读取数据库中的数据示例
    conn = psycopg2.connect(database='sanyu_01', user='tatt', password='postgres', host='192.168.91.13', port='5432')
    cur = conn.cursor()
    cur.execute("SELECT * FROM public.jiaozheng_dingweixx LIMIT 1")
    data = cur.fetchall()
    print(data)

if __name__ == '__main__':
    synonym()  # 执行更新操作

        上述代码是一个例子,实现了通过 psycopg2 库连接到 PostgreSQL 数据库,并读取 Excel 文件中的数据,并将其逐行更新到数据库的指定表 jiaozheng_dataxx 中的 upload_time 字段。

        代码中的 synonym() 函数用于读取 Excel 文件 'new.xlsx' 的 'news' Sheet 中的两列数据,并使用 SQL 更新语句将数据逐行更新到数据库中。get_dataset() 函数用于演示从数据库中读取数据的方法。

        你可以根据自己的需求,将数据库连接参数、Excel 文件路径、表名和字段名等信息进行相应的修改,以满足你实际的数据库和数据更新需求。同时,你也可以根据需要添加异常处理、日志记录等功能来完善代码。

        这样就实现了读取文件插入到数据库的方式,暂时解决当前使用Navicat工具手动导入数据失败的问题。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Steven灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值