使用if_exists ='append'

时间:2019-01-17 16:51:34

标签: python pandas sqlalchemy amazon-redshift pandas-to-sql

我试图每天在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:'\ n创建表my_schema。“ my_table”(\ n \ tactual_weight FLOAT(53),...“

0 个答案:

没有答案