首頁 > web前端 > js教程 > 如何使用 pg-promise 有效率地執行多行插入?

如何使用 pg-promise 有效率地執行多行插入?

DDD
發布: 2024-10-30 06:29:02
原創
450 人瀏覽過

How can I perform multi-row inserts efficiently with pg-promise?

使用pg-promise 進行多行插入

問題:
使用單一物件的參數進行插入使用pg-promise 可以輕鬆執行,但多行插入需要更複雜的技術。有沒有簡單的方法可以透過單一查詢插入多行?

解決方案:

在較新版本的 pg-promise 中,helpers 命名空間提供了最佳化且靈活的方法用於多行插入。您可以在helpers 命名空間中使用插入函數,而不是手動建立查詢字串:

const pgp = require('pg-promise')({
    capSQL: true // capitalize all SQL
});
const db = pgp(/*connection*/);
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);

await db.none(query);
登入後複製

此程式碼產生以下SQL:

<code class="sql">INSERT INTO "tmp"("col_a","col_b") VALUES('a1', 'b1'),('a2', 'b2')</code>
登入後複製

此方法具有多種優點:

  • 最佳化效能
  • 防止SQL 注入
  • 針對單行和多行插入或更新的集中查詢產生

附帶問題:

當正確引用參數名稱時,使用參數表示法的插入可以防止SQL 注入。但是,如果需要動態插入列名或表名,則應使用 SQL 名稱進行額外保護。

以上是如何使用 pg-promise 有效率地執行多行插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板