psycopg2: TypeError: Ожидаемые байты или строка в кодировке Unicode, вместо них получено значение quoted_name - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь загрузить файл размером ~ 900 МБ в базу данных Postgres, однако метод copy_from вызывает некоторые проблемы (метод df.to_sql занимал более 8 часов, чтобы загрузить эти данные в AWS).

Например, вот некоторый код, который преобразует фрейм данных в stringio

sio = StringIO()
    sio.write(raw_data.to_csv(index=False, header=None, quoting=csv.QUOTE_NONNUMERIC, sep=','))
    sio.seek(0)

    with conn.cursor() as cur:
        # cur.copy_expert("""COPY sam_monthly_extract_temp FROM STDIN WITH (FORMAT CSV)""", sio)
        cur.copy_from(sio, 'sam_monthly_extract_temp', sep=',', columns=load_column_names)
        conn.commit()

Это вызывает ошибку:

Traceback (most recent call last):
  File "sam_monthly_extract.py", line 312, in <module>
    cur.copy_from(sio, 'sam_monthly_extract_temp', sep=',', columns=load_column_names)
TypeError: Expected bytes or unicode string, got quoted_name instead

Я в растерянности, так какк чему это приводит?Имеет ли это отношение к quoting kwarg в методе to_csv?

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Некоторые из полей адреса имели , в них, так чтобыло двойное цитирование этих полей.Я изменил sep=',' на sep='|' в обоих местах, и он прекратил двойные кавычки в адресных полях, в которых было ,.Тем не менее, проблема все еще сохраняется.

РЕДАКТИРОВАТЬ 2: я получил его работать,

cur.copy_expert("""COPY sam_monthly_extract_temp FROM STDIN WITH (FORMAT CSV, DELIMITER '|')""", sio)
...