【问题标题】:How to insert large amounts of data into a Postgres table using a node library?如何使用节点库将大量数据插入 Postgres 表?
【发布时间】:2021-01-27 20:39:05
【问题描述】:

使用节点向 Postgres 表中插入大量数据的好方法是什么?

我们正在使用 api 从 3rd 方服务获取包含大量数据(对象)的 json 对象数组,我们需要使用节点库将这些数据发送到 Postgres 数据库。

【问题讨论】:

    标签: node.js postgresql


    【解决方案1】:

    如果您有大量 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,所以你可以根据自己的喜好来调味。

    【讨论】:

    • 谢谢!正是我想要的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2021-03-31
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多