Bagaimanakah pg-promise boleh mengendalikan sisipan berbilang baris dengan cekap dalam PostgreSQL?

Barbara Streisand
Lepaskan: 2024-10-31 01:14:18
asal
674 orang telah melayarinya

How can pg-promise efficiently handle multi-row inserts in PostgreSQL?

Sisipan berbilang baris dengan pg-promise

Memasukkan berbilang baris dalam satu pertanyaan ialah pendekatan yang cekap untuk operasi pukal. Pg-promise menyediakan sokongan lancar untuk sisipan berbilang baris melalui mekanisme berasaskan tatasusunannya.

Sintaks Sisipan Berbilang baris

Untuk memasukkan berbilang baris, anda boleh menentukannya sebagai tatasusunan objek, setiap objek mewakili baris:

const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];
Salin selepas log masuk

Untuk menjana pertanyaan sisipan berbilang baris, gunakan pembantu sisipan daripada ruang nama pgp.helpers:

const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
const query = insert(values, cs);
Salin selepas log masuk

Ini menjana pertanyaan berikut:

INSERT INTO "tmp"("col_a","col_b") VALUES('a1','b1'),('a2','b2')
Salin selepas log masuk

Pelaksanaan Pertanyaan

Anda boleh melaksanakan pertanyaan yang dijana menggunakan kaedah none:

await db.none(query);
Salin selepas log masuk

Nama SQL Dinamik dan Perlindungan Injeksi SQL

Pg-promise menggunakan ruang letak ($1, $2, dsb.) untuk parameter pertanyaan, bukannya interpolasi rentetan. Pendekatan ini menghalang kelemahan suntikan SQL kerana pustaka membersihkan parameter sebelum membina pertanyaan.

Nota Tambahan

  • Mengembalikan ID Rekod Baharu: Untuk mendapatkan semula ID rekod yang baru dimasukkan, tambahkan id RETURNING pada pertanyaan dan gunakan banyak kaedah untuk melaksanakannya.
  • Pengendalian Ralat: Untuk mengendalikan kemungkinan ralat, bungkus penjanaan pertanyaan dalam fungsi yang boleh membuang pengecualian jika penjanaan gagal.

Ringkasnya, pg-promise menawarkan penyelesaian yang teguh untuk melaksanakan sisipan berbilang baris, memastikan integriti data dan kecekapan prestasi. Gunakan insert helper dan nama SQL dinamik untuk hasil yang optimum.

Atas ialah kandungan terperinci Bagaimanakah pg-promise boleh mengendalikan sisipan berbilang baris dengan cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan