sql >> Databáze >  >> RDS >> PostgreSQL

Proč psycopg2 INSERT trvá tak dlouho, než se spouští ve smyčce a jak jej mohu urychlit?

Existuje několik možností, jak urychlit vkládání hromadných dat.

1.) commit() po dokončení smyčky:

for ele in coordinates:
    cursor.execute('INSERT INTO gmaps (source_latitude, source_longitude, destination_latitude, destination_longitude) VALUES (%s, %s, %s, %s)', (ele[0], ele[1], ele[2], ele[3])))
conn.commit()

2.) Použijte pomocníky pro rychlé spuštění od psycopg2 , například execute_batch() or execute_values() .

3.) Koncentrace řetězce pomocí mogrify() :

dataText = ','.join(cur.mogrify('(%s,%s,%s,%s)', row) for ele in coordinates)
cur.execute('INSERT INTO gmaps VALUES ' + dataText)
cur.commit()

Pro podrobné srovnání INSERT rychlosti provádění, podívejte se na toto benchmark.




  1. Jak vytvoříte booleovské pole ano/ne na serveru SQL?

  2. Připojení c++ mysql bad_alloc pomocí konektoru c++

  3. Spojte více tabulek se stejným názvem sloupce

  4. Jak nejlépe rozdělit řetězce csv v oracle 9i