Я пытаюсь ежедневно вставлять фрейм данных в таблицу в Redshift. Команда to_sql работает для создания таблицы, но возвращает ошибку, когда я пытаюсь добавить существующую таблицу даже при использовании аргумента if_exists = 'append'.
Версии:
Панды: 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), ... "