sql >> Databasteknik >  >> RDS >> PostgreSQL

SQLAlchemy Core bulkinsert långsam

Jag blev förbannad när jag såg att detta inte hade något svar... Jag stötte på exakt samma problem häromdagen:Försökte bulka infoga ungefär miljoner rader till en Postgres RDS-instans med CORE. Det tog timmar .

Som en lösning slutade jag med att skriva mitt eget bulk-insert-skript som genererade själva den råa sql:

bulk_insert_str = []
for entry in entry_list:
    val_str = "('{}', '{}', ...)".format(entry["column1"], entry["column2"], ...)
    bulk_insert_str.append(val_str)

engine.execute(
    """
    INSERT INTO my_table (column1, column2 ...)
    VALUES {}
    """.format(",".join(bulk_insert_str))
)

Även om det var fult gav detta mig den prestanda vi behövde (~500 000 rader/minut)

Hittade du en CORE-baserad lösning? Om inte, hoppas detta hjälper!

UPPDATERING:Det slutade med att jag flyttade mitt gamla skript till en extra EC2-instans som vi inte använde, vilket faktiskt löste problemet med långsam prestanda. Osäker på vilken inställning du har, men uppenbarligen finns det ett nätverksoverhead vid kommunikation med RDS från en extern (icke-AWS) anslutning.



  1. VBA Run-time error '-2147467259 (80004005)

  2. PostgreSQL 12:Implementering av K-Nearest Neighbor Space Partitioned Generalized Search Tree Index

  3. Välj uttalande för att returnera förälder och oändliga barn

  4. Hur databaser stöder e-handelsföretag