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

psycopg2 COPY pomocí kurzoru.copy_from() zamrzne při velkých vstupech

Toto je pouze řešení, ale do psql můžete něco napojit. Tento recept používám někdy, když jsem příliš líný vyhodit psycopg2

import subprocess
def psql_copy_from(filename, tablename, columns = None):
    """Warning, this does not properly quote things"""
    coltxt = ' (%s)' % ', '.join(columns) if columns else ''
    with open(filename) as f:
        subprocess.check_call([
            'psql',
            '-c', 'COPY %s%s FROM STDIN' % (tablename, coltxt),
            '--set=ON_ERROR_STOP=true', # to be safe
            # add your connection args here
        ], stdin=f)

Pokud jde o vaše zamykání, používáte více vláken nebo něco podobného?

Zaznamenává váš postgres něco, jako je uzavřené připojení nebo uváznutí? Vidíte aktivitu disku po jeho uzamčení?



  1. mysql odpovídá řetězci se začátkem řetězce v tabulce

  2. MySQL Vložit řádek, na duplikátu:přidat příponu a znovu vložit

  3. Získejte game_id hráče MAX (skóre) v SQL

  4. Jak vynutit datový typ char(N) místo varchar(N) v poli modelu django