ホームページ  >  記事  >  ウェブフロントエンド  >  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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。