PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

psycopg2 equivalente ao comando R dbWriteTable e obtendo mais desempenho do código python


Tente isto:
    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)

Passe o comando sql apenas uma vez para todas as linhas. Além da sobrecarga de desempenho de emitir comandos sql adicionais, observe que o tamanho da própria string sql (em bytes) provavelmente supera o tamanho dos dados reais sob teste.

Usar id2 como gerador sem o array também deve evitar carregar todo o conjunto de dados na memória.