Pandas to_sql возвращает ошибку 'отношение уже существует' при использовании if_exists='append'

Я пытаюсь ежедневно вставлять фрейм данных в таблицу в Redshift. Команда to_sql работает для создания таблицы, но возвращает ошибку, когда я пытаюсь добавить существующую таблицу даже при использовании аргумента if_exists = 'append'.

Версии: pandas: 0.23.4 sqlalchemy: 1.2.15 psycopg2: 2.7.6.1 Python: 3.6.7

Я также использую патч обезьяны для ускорения вставок, описанных здесь: https://github.com/pandas-dev/pandas/issues/8953 но без этого патча вставка занимает слишком много времени (несколько часов).

#monkey patch to_sql for redshift
from pandas.io.sql import SQLTable

def _execute_insert(self, conn, keys, data_iter):
    print ("Using monkey-patched _execute_insert")
    data = [dict((k, v) for k, v in zip(keys, row)) for row in data_iter]
    conn.execute(self.insert_statement().values(data))

SQLTable._execute_insert = _execute_insert
import pandas as pd

myDF.to_sql('my_table', engine, if_exists='append', schema = 'my_schema', index=False, chunksize = 10000)

Это возвращает следующую ошибку:

"ProgrammingError: (psycopg2.ProgrammingError) Связь"my_table"уже существует [SQL: '\nCREATE TABLE my_schema." My_table" (\n\tactual_weight FLOAT(53),...")

0 ответов

Другие вопросы по тегам