Maison > interface Web > js tutoriel > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-01 09:49:02
original
786 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!