Heim  >  Artikel  >  Web-Frontend  >  Wie erreicht man mit pg-promise effizient mehrzeilige Einfügungen?

Wie erreicht man mit pg-promise effizient mehrzeilige Einfügungen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 13:53:26855Durchsuche

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

Mehrzeilige Einfügungen mit pg-promise

Problemstellung:

Wie mehrere Zeilen mit einer einzigen INSERT-Abfrage in pg-promise effizient in eine Datenbank einfügen?

Lösung:

Der bevorzugte Ansatz in pg-promise ist die Verwendung der Hilfsprogramme Namespace für hohe Leistung und Flexibilität.

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

Zusätzliche Überlegungen:

  • Das ColumnSet-Objekt sollte statisch erstellt werden, um Formatierungsvorlagen für optimale Leistung zwischenzuspeichern.
  • Diese mehrzeilige Einfügung ist transaktionslos, was bedeutet, dass alle oder keine Werte eingefügt werden.
  • SQL-Injection-Schutz wird durch die Verwendung des Hilfsnamensraums in Verbindung mit SQL-Namen bereitgestellt.

Extras:

  • Um die ID jedes neuen Datensatzes zu erhalten, hängen Sie RETURNING id an die Abfrage an und führen Sie sie mit db.many() aus.
  • Zum Einfügen großer Datensätze sollten Sie die Funktion „Datenimporte“ verwenden.
  • Sie können die Abfragegenerierung in einer Funktion kapseln, um die Fehlerbehandlung zu verbessern.

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

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