【发布时间】:2017-04-10 02:58:22
【问题描述】:
我必须每 20 秒读取一次 CSV。每个 CSV 包含最小值。 500到最大。 60000 行。我必须在 Postgres 表中插入数据,但在此之前我需要检查项目是否已经插入,因为很可能会出现重复项目。检查唯一性的字段也被编入索引。
所以,我分块读取文件并使用 IN 子句获取数据库中已有的项目。
有没有更好的方法呢?
【问题讨论】:
-
添加正确的唯一索引并只执行插入,忽略重复错误。
-
在大数据集上会有更好的表现吗?
-
@meagar:您不能只使用基于集合的操作“忽略重复错误”。事务将被回滚,并且什么也做不了。仅当您
INSERT一行一行地进行时才有意义 - 就性能而言,这将是一个糟糕的主意。
标签: sql performance postgresql csv postgresql-copy