sql >> Databasteknik >  >> RDS >> PostgreSQL

psycopg2 som motsvarar R dbWriteTable-kommandot och får mer prestanda från python-kod

Prova detta:

    id2 = csv.reader(open(os.path.join(perf_dir,id_files[1])))
    h = tuple(next(id2))

    create = '''CREATE TABLE id2 (%s varchar, %s int PRIMARY KEY, %s int)''' % h
    insert = '''INSERT INTO id2 (%s, %s, %s) VALUES (%%s, %%s, %%s)''' % h

    ...

    cr.executemany(insert, id2)

Skicka kommandot sql endast en gång för alla rader. Utöver prestandaoverheaden för att utfärda ytterligare sql-kommandon, lägg märke till att storleken på själva sql-strängen (i byte) sannolikt dvärgar storleken på den verkliga data som testas.

Att använda id2 som en generator utan arrayen bör också undvika att ladda hela datamängden i minnet.




  1. Psycopg2 radantal för markör på serversidan

  2. Kontrollera varaktigheten för PostgreSQL-lås väntar

  3. mysql-servern har försvunnit fel under installation av migrering (laravel)

  4. mysql AS-klausul