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);
Dieser Code generiert das folgende SQL:
<code class="sql">INSERT INTO "tmp"("col_a","col_b") VALUES('a1', 'b1'),('a2', 'b2')</code>
Dieser Ansatz bietet mehrere Vorteile:
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!