Fiquei chateado quando vi que isso não tinha uma resposta... Encontrei exatamente o mesmo problema outro dia:Tentando inserir em massa cerca de milhões de linhas em uma instância do Postgres RDS usando CORE. Estava demorando horas .
Como solução alternativa, acabei escrevendo meu próprio script de inserção em massa que gerou o próprio sql bruto:
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))
)
Embora feio, isso me deu o desempenho que precisávamos (~ 500.000 linhas/minuto)
Você encontrou uma solução baseada em CORE? Se não, espero que isso ajude!
ATUALIZAÇÃO:Acabei movendo meu script antigo para uma instância sobressalente do EC2 que não estávamos usando, o que realmente corrigiu o problema de desempenho lento. Não tenho certeza de qual é sua configuração, mas aparentemente há uma sobrecarga de rede na comunicação com o RDS de uma conexão externa (não AWS).