PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

psycopg2 COPY przy użyciu cursor.copy_from() zawiesza się przy dużych wejściach

To tylko obejście problemu, ale możesz po prostu przesłać coś do psql. Używam tego przepisu czasami, gdy jestem zbyt leniwy, żeby wyrzucić 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)

Jeśli chodzi o twoje blokowanie, czy używasz wielu wątków lub czegoś podobnego?

Czy Twój postgres rejestruje coś takiego jak zamknięte połączenie lub impas? Czy widzisz aktywność dysku po jego zablokowaniu?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tygodnie między dwiema datami

  2. Dołącz znak plus/minus do liczby w PostgreSQL

  3. Lista sąsiedztwa do wykresu JSON z Postgres

  4. Zmaterializowany widok PostgreSQL

  5. Jak sprawdzić, czy istnieje użytkownik postgres?