从大数据库更新小记录的最佳方法是什么?

What is the best method to update small records from a big database?

我有一个数据库,其中包含我从植物学网站下载的 CSV 的所有数据,我希望它始终根据此 CSV 的版本进行更新。我的问题是 CSV 非常大,它包含至少 100 万条记录,平均需要一整小时才能保存所有内容。关于如何在不需要重写整个内容的情况下执行此更新的任何想法?泰斯姆!

一些额外信息:

您没有提到如何将数据加载到 postgres 中,但是您可以使用 COPY 命令,如下所示:

从“/tmp/myfile.csv”复制 mytable(格式为 csv,header 真);

应该比使用 ORM 更快

https://www.postgresql.org/docs/current/sql-copy.html

其他选项是使用file_fdw,如果你只需要查询数据,不需要更新

https://www.postgresql.org/docs/current/file-fdw.html

您基本上需要找到两个 csv 版本之间的差异并找到已更改的记录并更新这些记录。

您可以使用任何 text/csv 比较器 npm 库来找出差异,一旦您获得有更新的记录,您就可以为它们启动更新查询。