sql >> Base de Datos >  >> RDS >> PostgreSQL

SQLAlchemy Core inserción masiva lenta

Me deprimí cuando vi que esto no tenía una respuesta... Me encontré exactamente con el mismo problema el otro día:intentar insertar en masa alrededor de millones de filas en una instancia RDS de Postgres usando CORE. Estaba tomando horas .

Como solución alternativa, terminé escribiendo mi propia secuencia de comandos de inserción masiva que generaba el propio sql sin formato:

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))
)

Aunque feo, esto me dio el rendimiento que necesitábamos (~500,000 filas/minuto)

¿Encontró una solución basada en CORE? Si no es así, ¡espero que esto ayude!

ACTUALIZACIÓN:Terminé moviendo mi antiguo script a una instancia de EC2 de repuesto que no estábamos usando, lo que en realidad solucionó el problema de rendimiento lento. No estoy seguro de cuál es su configuración, pero aparentemente hay una sobrecarga de red al comunicarse con RDS desde una conexión externa (no AWS).