【发布时间】:2020-10-31 15:15:18
【问题描述】:
我每天有超过 1000 万条记录要插入 Postgres 数据库。
90% 是重复的,只应插入唯一记录(这可以在特定列值上检查)。
由于体积大,批量插入似乎是唯一明智的选择。
我正在尝试弄清楚如何完成这项工作。
我试过了:
- SQLAlchemy,但它会引发错误。所以我认为这是不可能的。
s = Session(bind=engine)
s.bulk_insert_mappings(Model, rows)
s.commit()
投掷:
IntegrityError: (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint "..._key"
- Panda 的
to_sql没有这种独特的记录功能。
所以我正在考虑将新记录放入“中间表”中,然后并行运行后台作业以将这些记录添加到主表中(如果它们尚不存在)。我不知道这是否是最有效的程序。
有没有更好的方法? 有什么方法可以让 SQLAlchemy 或 Pandas 做到这一点?
【问题讨论】:
标签: python pandas postgresql sqlalchemy