Maison  >  Article  >  interface Web  >  Comment obtenir des insertions multi-rangées efficaces avec pg-promise ?

Comment obtenir des insertions multi-rangées efficaces avec pg-promise ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 09:49:02787parcourir

How to Achieve Efficient Multi-Row Inserts with pg-promise?

Insérer plusieurs lignes avec pg-promise

L'insertion de plusieurs lignes dans une base de données avec une seule requête INSERT peut considérablement améliorer les performances. Dans pg-promise, il existe plusieurs méthodes que vous pouvez utiliser pour les insertions sur plusieurs lignes.

L'utilisation de ColumnSet et l'insertion d'assistants à partir de l'espace de noms des assistants est l'approche recommandée pour optimiser les performances. Tout d’abord, créez un objet ColumnSet, qui définit les colonnes dans lesquelles vous souhaitez insérer des données. Ensuite, utilisez l'assistant d'insertion pour générer la requête INSERT avec les valeurs fournies. La requête sera générée avec le nombre approprié d'espaces réservés de valeur et la clause VALUES contiendra les données fournies. Voici un exemple :

<code class="javascript">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);</code>

Cela générera la requête INSERT suivante :

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

Vous pouvez exécuter la requête en utilisant db.none(query).

Protection contre les injections SQL

Lors de l'utilisation de l'assistant d'insertion, les valeurs que vous fournissez sont automatiquement paramétrées, offrant une protection contre les injections SQL. Cependant, si vous insérez dynamiquement des noms de schéma/table/colonne, il est crucial d'utiliser des noms SQL pour éviter les attaques potentielles par injection SQL.

Insertion avec des valeurs de retour

Si vous souhaitez récupérer les ID générés ou toute autre valeur à partir d'une insertion multi-lignes, vous pouvez ajouter RETURNING à votre requête et l'exécuter à l'aide de db.many. Cela renverra un tableau d'objets contenant les données demandées.

Conclusion

L'utilisation de ColumnSet et d'insertion d'assistants avec des noms SQL fournit un moyen sécurisé et efficace d'effectuer plusieurs -insertions de lignes avec pg-promise.

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