PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memperbarui kolom tabel Postgres menggunakan bingkai data pandas?

Mengalami masalah yang sama dan solusi yang diterima saat ini terlalu lambat untuk saya. Tabel saya memiliki 500k+ baris dan saya perlu memperbarui 100k+ baris. Setelah penelitian yang panjang dan trial and error saya tiba di solusi yang efisien dan benar.

Idenya adalah menggunakan psycopg sebagai penulis Anda dan menggunakan tabel sementara. df adalah kerangka data panda Anda yang berisi nilai yang ingin Anda atur.

import psycopg2

conn = psycopg2.connect("dbname='db' user='user' host='localhost' password='test'")
cur = conn.cursor()

rows = zip(df.id, df.z)
cur.execute("""CREATE TEMP TABLE codelist(id INTEGER, z INTEGER) ON COMMIT DROP""")
cur.executemany("""INSERT INTO codelist (id, z) VALUES(%s, %s)""", rows)

cur.execute("""
    UPDATE table_name
    SET z = codelist.z
    FROM codelist
    WHERE codelist.id = vehicle.id;
    """)

cur.rowcount
conn.commit()
cur.close()
conn.close()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql enum apa kelebihan dan kekurangannya?

  2. PostgresSql:Membandingkan dua tabel dan mendapatkan hasilnya dan membandingkannya dengan tabel ketiga

  3. psql:FATAL:peran postgres tidak ada (dengan opsi -h localhost)

  4. Cara mengembalikan skema publik ke skema yang berbeda

  5. Apa yang dimaksud dengan %% dalam PL/pgSQL?