我使用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仅忽略损坏的行并保存所有其他行。可以实现吗?当前的解决方法是将数据帧拆分为较小的部分,并将其一一保存。不过很贵。