Heim > Web-Frontend > js-Tutorial > Wie kann ich mit pg-promise effizient mehrzeilige Einfügungen durchführen?

Wie kann ich mit pg-promise effizient mehrzeilige Einfügungen durchführen?

DDD
Freigeben: 2024-10-30 06:29:02
Original
440 Leute haben es durchsucht

How can I perform multi-row inserts efficiently with pg-promise?

Mehrzeilige Einfügungen mit pg-promise

Problem:
Einfügungen mit Parametern eines einzelnen Objekts kann leicht mit pg-promise durchgeführt werden, aber mehrzeilige Einfügungen erfordern komplexere Techniken. Gibt es eine einfache Methode zum Einfügen mehrerer Zeilen mit einer einzigen Abfrage?

Lösung:

In neueren Versionen von pg-promise bietet der Helpers-Namespace optimierte und flexible Methoden für mehrreihige Einsätze. Anstatt die Abfragezeichenfolge manuell zu erstellen, können Sie die Einfügefunktion innerhalb des Hilfsnamensraums verwenden:

const pgp = require('pg-promise')({
    capSQL: true // capitalize all SQL
});
const db = pgp(/*connection*/);
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);

await db.none(query);
Nach dem Login kopieren

Dieser Code generiert das folgende SQL:

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

Dieser Ansatz bietet mehrere Vorteile:

  • Optimierte Leistung
  • Verhindert SQL-Injection
  • Zentralisiert Abfragegenerierung für einzeilige und mehrzeilige Einfügungen oder Aktualisierungen

Nebenfrage:

Einfügungen mit Parameternotation sind vor SQL-Injection geschützt, wenn Parameternamen vorhanden sind richtig zitiert. Wenn jedoch eine dynamische Einfügung von Spalten- oder Tabellennamen erforderlich ist, sollten SQL-Namen für zusätzlichen Schutz verwendet werden.

Das obige ist der detaillierte Inhalt vonWie kann ich mit pg-promise effizient mehrzeilige Einfügungen durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage