使用 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 "tmp"("col_a","col_b") VALUES('a1','b1'),('a2','b2') // executing the query: await db.none(query);</code>
ColumnSet 类定义要插入的列,而 insert 函数则获取要插入的数据值并生成SQL 查询。这种方法性能很高,并且允许单行和多行插入。
SQL 注入保护
关于 SQL 注入保护的附带问题,它是重要的是要理解使用占位符($1、$2 等)本身并不能保证保护。必须将占位符与适当的输入验证和清理相结合,以防止执行恶意 SQL 命令。 Pg-promise 默认采用这种方法,提供了一种将数据插入数据库的安全方法。
其他注意事项和额外内容
总之,pg-promise 的 helpers 命名空间可以轻松执行多行插入,防止 SQL 注入,同时优化性能。
以上是如何使用 pg-promise 在 PostgreSQL 数据库中高效执行多行插入?的详细内容。更多信息请关注PHP中文网其他相关文章!