node.js - 使用 brianc/node-postgres 批量插入到 Postgres

标签 node.js postgresql node-postgres

我在使用 pg ( https://github.com/brianc/node-postgres ) 的 nodejs 中有以下代码 我为员工创建订阅的代码就是这样。

    client.query(
      'INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid) 
       values ($1,$2,$3)', [
        datasetArr[0].subscription_guid,
        datasetArr[0].employer_guid,
        datasetArr[0].employee_guid
      ],


      function(err, result) {
        done();

        if (err) {
          set_response(500, err, res);
          logger.error('error running query', err);
          return console.error('error running query', err);
        }

        logger.info('subscription with created');
        set_response(201);

      });

正如您已经注意到的,datasetArr 是一个数组。我想一次为多个员工创建批量订阅。但是我不想遍历数组。有没有办法用 pg 开箱即用?

最佳答案

我搜索了同样的问题,但还没有找到解决方案。 使用异步库,多次使用查询并进行必要的错误处理非常简单。

可能是这个代码变体有帮助。 (将 10.000 个小 json 对象插入空数据库需要 6 秒)。

克里斯托夫

function insertData(item,callback) {
  client.query('INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid)
       values ($1,$2,$3)', [
        item.subscription_guid,
        item.employer_guid,
        item.employee_guid
       ], 
  function(err,result) {
    // return any err to async.each iterator
    callback(err);
  })
}
async.each(datasetArr,insertData,function(err) {
  // Release the client to the pg module
  done();
  if (err) {
    set_response(500, err, res);
    logger.error('error running query', err);
    return console.error('error running query', err);
  }
  logger.info('subscription with created');
  set_response(201);
})

关于node.js - 使用 brianc/node-postgres 批量插入到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008668/

相关文章:

sql - 用单引号替换为双单引号在 PostgreSQL 12 中不起作用

javascript - 为什么 fs 写入文件在 localhost 中工作但在 heroku 应用程序中不起作用?

node.js - NightmareJS如何返回完整的html源代码?

node.js - JavaScript SDK 的 putEvents-Method 中的 Amazon Pinpoint 终端 Node 不起作用

node.js - 在下一个命令之前完成整个循环/forEach

sql - 使用选定的列创建另一个字符串插值组合 Postgresql 中的所有字段?

php - Laravel Eloquent : Model attribute with conditional concatenation

arrays - 将自定义类型的数组从node-pg和SQL注入(inject)传递给postgres函数

javascript - postgreSQL 错误 : "constraint does not exist" (but it does exist. ..)

sql - 如何获取距离当前时间 30 秒创建或更新的数据 PostgreSQL