如何忽略熊猫to_sql中损坏的行

时间:2019-08-16 08:17:56

标签: python-3.x pandas postgresql

我使用to_sql()将pandas数据框保存到postgres db表中。如果其中一行格式不正确,则会引发psycopg2.DataError,并且不会保存整个数据帧。我试图捕获该错误,并用chunksize = 1逐行保存行,但是结果是相同的。如何忽略损坏的行?这是我使用的代码:

from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://postgres@localhost/db_name')
df = pd.read_csv(filename, chunksize=CHUNKSIZE, error_bad_lines=False)
for chunk in df:
    try:
        chunk.to_sql(TABLE_NAME, con=engine,)
    except:
        chunk.to_sql(TABLE_NAME, con=engine, chunksize=1)

我希望to_sql仅忽略损坏的行并保存所有其他行。可以实现吗?当前的解决方法是将数据帧拆分为较小的部分,并将其一一保存。不过很贵。

0 个答案:

没有答案