[PYTHON] Bulk Insert Pandas DataFrame mit psycopg2

Wenn Sie Pandas DataFrame als Masseneinfügung in PostgreSQL einfügen möchten, können Sie SQLAlchemy einfügen und .to_sql () verwenden. Wenn Sie jedoch psycopg2 als PostgreSQL-Client verwenden, möchten Sie "SQLAlchemy nicht nur dafür einfügen". Werden.

Also dachte ich: "Wenn Sie" .to_csv () "von DataFrame ausführen und es mit" .copy_from () "von psycopg2 lesen, können Sie Bulk Insert ausführen."

from io import StringIO
import pandas as pd
import psycopg2

def df2db(conn: psycopg2.extensions.connection, df: pd.DataFrame, table: str):
    buf = StringIO()
    df.to_csv(buf, sep='\t', na_rep=r'\N', index=False, header=False)
    buf.seek(0)
    with conn.cursor() as cur:
        cur.copy_from(buf, table, columns=df.columns)

Erstellen Sie eine solche Funktion

image.png

Wenn Sie beispielsweise einen solchen DataFrame in eine Tabelle mit dem Namen "logs" in PostgreSQL einfügen möchten,

with psycopg2.connect('postgresql://...') as conn:
    df2db(conn, df.reset_index(), 'logs')

Du kannst das.

Da der Index nicht ausgegeben wird, müssen Sie .reset_index () ausführen, wenn Sie den Index in die Tabelle einfügen möchten.

Recommended Posts

Bulk Insert Pandas DataFrame mit psycopg2
Ersetzen Sie Spaltennamen / -werte durch Pandas-Datenrahmen
Löschen Sie Zeilen mit beliebigen Werten in pandas DataFrame
Entfernen Sie Zeilen mit doppelten Indizes in pandas DataFrame
Mit Pandas schnell visualisieren
Datensätze mit Pandas verarbeiten (1)
Bootstrap-Sampling mit Pandas
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datensätze mit Pandas verarbeiten (2)
Extrahieren Sie mit Pandas DataFrame N Proben für jede Gruppe
Pandas lernen mit Chemoinfomatik
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Daten mit Pandas mischen
Python-Anwendung: Pandas # 3: Dataframe
Masseneinzug mit Xcode
Überprüfen Sie mit apply () (dataframe, Pandas), welche Zeile den Fehler verursacht hat.
Berechnen Sie den Zeitunterschied zwischen zwei Spalten mit Pandas DataFrame
Lesen Sie CSV mit Python-Pandas
Laden Sie verschachtelten Json mit Pandas
Standardisieren Sie nach Gruppen mit Pandas
Python-Handspiel (CSV wird mit Pandas DataFrame angewendet, aber nur vollständige Spalte Von CSV in DB einfügen?)
Exportieren Sie den Pandas-Datenrahmen nach Excel
Verhindern Sie Auslassungen mit Pandas Print
Datenverarbeitungstipps mit Pandas
7rep - Datenrahmen in Elasitcsearch einfügen