【发布时间】:2021-01-27 20:39:05
【问题描述】:
使用节点向 Postgres 表中插入大量数据的好方法是什么?
我们正在使用 api 从 3rd 方服务获取包含大量数据(对象)的 json 对象数组,我们需要使用节点库将这些数据发送到 Postgres 数据库。
【问题讨论】:
标签: node.js postgresql
使用节点向 Postgres 表中插入大量数据的好方法是什么?
我们正在使用 api 从 3rd 方服务获取包含大量数据(对象)的 json 对象数组,我们需要使用节点库将这些数据发送到 Postgres 数据库。
【问题讨论】:
标签: node.js postgresql
如果您有大量 json 格式的数据(即很多行),将 json 直接传递给 postgres 并让它处理并将数据插入到表中可能会更快。
例子:
表 foo 包含一列和一行,其中包含以下内容: [{"a":707,"b":12,"c":407}, {"a":221,"b":327,"c":19}, {"a":472,"b ":797,"c":430}, {"a":515,"b":174,"c":198}, ..... 最多 100k 个值]
让我们将这个数组的每个 json 对象插入到一个表“target”中,该表具有对应的列 a、b、c ...
INSERT INTO target (a,b,c)
SELECT (j->>'a')::INTEGER, (j->>'b')::INTEGER, (j->>'c')::INTEGER
FROM (SELECT json_array_elements(data) j from foo) f;
这在不到 1 秒的时间内完成了 100k 行,这比执行相同数量的 INSERT 快得多。
Postgres 有很多方法来操作 json,所以你可以根据自己的喜好来调味。
【讨论】: