为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Postgres中CSV文件中的值更新所选行?

如何使用Postgres中CSV文件中的值更新所选行?

RISEBY 2019-10-08 10:54:36
我正在使用Postgres,并想进行一个大型更新查询,该查询将从CSV文件中提取,可以说我有一个表,该表具有(id, banana, apple)。我想运行一个更新来更改香蕉而不是苹果,每个新的香蕉及其ID都将保存在CSV文件中。我尝试查看Postgres网站,但这些示例使我丧命。
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您可以尝试下面用python编写的代码,输入文件是要更新到表中的csv文件。每行都基于逗号进行拆分,因此对于每行,row [0]是第一列下的值,row [1]是第二列下的值,依此类推。


    import csv

    import xlrd

    import os

    import psycopg2

    import django

    from yourapp import settings

    django.setup()

    from yourapp import models



    try:

       conn = psycopg2.connect("host=localhost dbname=prodmealsdb 

       user=postgres password=blank")

       cur = conn.cursor()


       filepath = '/path/to/your/data_to_be_updated.csv'

       ext = os.path.splitext(filepath)[-1].lower()

       if (ext == '.csv'): 

          with open(filepath) as csvfile:

          next(csvfile)

          readCSV = csv.reader(csvfile, delimiter=',')

          for row in readCSV:

              print(row[3],row[5])

              cur.execute("UPDATE your_table SET column_to_be_updated = %s where 

              id = %s", (row[5], row[3]))

              conn.commit()

          conn.close()

          cur.close()


    except (Exception, psycopg2.DatabaseError) as error:

    print(error)

    finally:

    if conn is not None:

      conn.close()


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 604 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信