我们有一个150M行的文件,只用这些命令更新一个postgresql数据库表:
UPDATE "events" SET "value_1" = XX, "value_2" = XX, "value_3" = XX, "value_4" = XX WHERE "events"."id" = SOME_ID;
所有ID都是唯一的,无法将该更新应用于多个事件。目前,如果我们在psql中使用\i update.sql
运行此更新大约需要几天。
有没有更快的方法来运行它?
答案 0 :(得分:3)
最简单:在set synchronous_commit=off
\i update.sql
更好:
split -l 100000 -a 6 --additional-suffix=.sql update.sql update-part
/bin/ls update-part*.sql \
| xargs --max-procs=8 --replace psql --single-transaction --file={}