Maison  >  Article  >  interface Web  >  Comment réaliser des insertions multi-rangées avec efficacité à l'aide de pg-promise ?

Comment réaliser des insertions multi-rangées avec efficacité à l'aide de pg-promise ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 13:53:26855parcourir

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

Insertions multi-rangées avec pg-promise

Énoncé du problème :

Comment pour insérer efficacement plusieurs lignes dans une base de données à l'aide d'une seule requête INSERT dans pg-promise ?

Solution :

L'approche préférée dans pg-promise est d'utiliser les helpers espace de noms pour des performances et une flexibilité élevées.

<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>

Considérations supplémentaires :

  • L'objet ColumnSet doit être créé de manière statique pour mettre en cache les modèles de formatage pour des performances optimales.
  • Cette insertion multi-lignes est sans transaction, ce qui signifie que toutes ou aucune des valeurs sera insérée.
  • La protection contre les injections SQL est fournie en utilisant l'espace de noms des assistants en conjonction avec les noms SQL.

Extras :

  • Pour obtenir l'ID de chaque nouvel enregistrement, ajoutez RETURNING id à la requête et exécutez-la avec db.many().
  • Pour insérer des ensembles de données volumineux, envisagez d'utiliser la fonctionnalité d'importation de données.
  • Vous pouvez encapsuler la génération de requêtes dans une fonction pour une gestion améliorée des erreurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn