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

Comment puis-je effectuer efficacement des insertions multi-lignes dans une base de données PostgreSQL à l'aide de pg-promise ?

Linda Hamilton
Libérer: 2024-10-30 14:03:03
original
194 Les gens l'ont consulté

How can I efficiently perform multi-row inserts in a PostgreSQL database using pg-promise?

Insérer plusieurs lignes avec pg-promise

L'insertion de plusieurs lignes dans une table de base de données avec une seule requête peut améliorer considérablement les performances, en particulier lorsque traiter de grands ensembles de données. Pg-promise, un puissant générateur de requêtes SQL et une bibliothèque d'exécution, fournit un moyen pratique et efficace d'effectuer des insertions multi-lignes.

Insertion multi-lignes avec assistants

Pour insérer plusieurs lignes avec pg-promise, vous pouvez utiliser l'espace de noms helpers. Cet espace de noms fournit un ensemble de fonctions utilitaires qui facilitent la construction de requêtes SQL paramétrables.

<code class="javascript">const pgp = require('pg-promise')({
  capSQL: true // capitalize all generated SQL
});
const db = pgp(/*connection*/);
const {ColumnSet, insert} = pgp.helpers;

// our set of columns, to be created only once (statically), and then reused,
// to let it cache up its formatting templates for high performance:
const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
    
// data input values:
const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];
    
// generating a multi-row insert query:
const query = insert(values, cs);
//=> INSERT INTO &quot;tmp&quot;(&quot;col_a&quot;,&quot;col_b&quot;) VALUES('a1','b1'),('a2','b2')
    
// executing the query:
await db.none(query);</code>
Copier après la connexion

La classe ColumnSet définit les colonnes à insérer, tandis que la fonction d'insertion prend les valeurs de données à insérer et génère la requête SQL. Cette approche est très performante et permet à la fois des insertions sur une seule ligne et sur plusieurs lignes.

Protection contre les injections SQL

En ce qui concerne la question secondaire de la protection contre les injections SQL, il est Il est essentiel de comprendre que l’utilisation d’espaces réservés (1 $, 2 $, etc.) ne garantit pas en soi la protection. Il est essentiel de combiner des espaces réservés avec une validation et une désinfection des entrées appropriées pour empêcher l'exécution de commandes SQL malveillantes. Pg-promise utilise cette approche par défaut, offrant un moyen sécurisé d'insérer des données dans votre base de données.

Considérations et extras supplémentaires

  • Renvoi des identifiants : Pour récupérer les ID des enregistrements nouvellement insérés, ajoutez RETURNING id à votre requête et exécutez-la avec la méthode map pour convertir le résultat en un tableau d'entiers.
  • Importations de données énormes : Pour importer des ensembles de données exceptionnellement volumineux, envisagez d'utiliser la fonctionnalité d'importation de données fournie par pg-promise.
  • Optimisation pour la vitesse : La génération de requêtes peut être enveloppée dans une fonction pour garantir qu'elle est effectué une seule fois, améliorant encore la vitesse d'exécution.

En conclusion, l'espace de noms des assistants de pg-promise facilite l'exécution d'insertions sur plusieurs lignes, protégeant ainsi contre l'injection SQL tout en optimisant les performances.

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!