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

我正在使用Postgres,并想进行一个大型更新查询,该查询将从CSV文件中提取,可以说我有一个表,该表具有(id, banana, apple)

我想运行一个更新来更改香蕉而不是苹果,每个新的香蕉及其ID都将保存在CSV文件中。

我尝试查看Postgres网站,但这些示例使我丧命。


RISEBY
浏览 605回答 3
3回答

扬帆大鱼

您可以尝试下面用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()
打开App,查看更多内容
随时随地看视频慕课网APP