首页  >  文章  >  web前端  >  如何使用pg-promise高效实现多行插入?

如何使用pg-promise高效实现多行插入?

Barbara Streisand
Barbara Streisand原创
2024-10-30 13:53:26855浏览

How to Achieve Multi-Row Inserts with Efficiency Using pg-promise?

使用 pg-promise 进行多行插入

问题陈述:

如何在 pg-promise 中使用单个 INSERT 查询有效地将多行插入数据库?

解决方案:

pg-promise 中的首选方法是使用助手命名空间以实现高性能和灵活性。

<code class="javascript">const {ColumnSet, insert} = pgp.helpers;

const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];

const query = insert(values, cs);
// => INSERT INTO "tmp"("col_a","col_b") VALUES('a1','b1'),('a2','b2')

await db.none(query);</code>

其他注意事项:

  • 应静态创建 ColumnSet 对象以缓存格式模板以获得最佳性能。
  • 此多行插入是无事务的,这意味着将插入所有值或不插入任何值。
  • 通过使用助手命名空间与 SQL 名称结合来提供 SQL 注入保护。

额外:

  • 要获取每个新记录的 ID,请将 RETURNING id 附加到查询并使用 db.many() 执行。
  • 要插入大型数据集,请考虑利用数据导入功能。
  • 您可以将查询生成封装在函数中以增强错误处理。

以上是如何使用pg-promise高效实现多行插入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn