首页 > web前端 > js教程 > 正文

如何使用 pg-promise 在 PostgreSQL 数据库中高效执行多行插入?

Linda Hamilton
发布: 2024-10-30 14:03:03
原创
194 人浏览过

How can I efficiently perform multi-row inserts in a PostgreSQL database using pg-promise?

使用 pg-promise 进行多行插入

使用单个查询将多行插入到数据库表中可以显着提高性能,尤其是在处理大型数据集。 Pg-promise 是一个强大的 SQL 查询构建器和执行器库,提供了一种方便高效的方法来执行多行插入。

使用助手进行多行插入

要使用 pg-promise 插入多行,您可以使用 helpers 命名空间。该命名空间提供了一组实用函数,可以轻松构造可参数化的 SQL 查询。

<code class="javascript">const pgp = require('pg-promise')({
  capSQL: true // capitalize all generated SQL
});
const db = pgp(/*connection*/);
const {ColumnSet, insert} = pgp.helpers;

// our set of columns, to be created only once (statically), and then reused,
// to let it cache up its formatting templates for high performance:
const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
    
// data input values:
const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];
    
// generating a multi-row insert query:
const query = insert(values, cs);
//=> INSERT INTO &quot;tmp&quot;(&quot;col_a&quot;,&quot;col_b&quot;) VALUES('a1','b1'),('a2','b2')
    
// executing the query:
await db.none(query);</code>
登录后复制

ColumnSet 类定义要插入的列,而 insert 函数则获取要插入的数据值并生成SQL 查询。这种方法性能很高,并且允许单行和多行插入。

SQL 注入保护

关于 SQL 注入保护的附带问题,它是重要的是要理解使用占位符($1、$2 等)本身并不能保证保护。必须将占位符与适当的输入验证和清理相结合,以防止执行恶意 SQL 命令。 Pg-promise 默认采用这种方法,提供了一种将数据插入数据库的安全方法。

其他注意事项和额外内容

  • 返回 ID : 要检索新插入记录的 ID,请将 RETURNING id 附加到查询中,并使用 map 方法执行它,以将结果转换为整数数组。
  • 大量数据导入: 对于导入特别大的数据集,请考虑使用 pg-promise 提供的数据导入功能。
  • 优化速度: 查询生成可以包装到一个函数中以确保它是仅执行一次,进一步提高执行速度。

总之,pg-promise 的 helpers 命名空间可以轻松执行多行插入,防止 SQL 注入,同时优化性能。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!