Bagaimanakah saya boleh melakukan sisipan berbilang baris dengan cekap dalam pangkalan data PostgreSQL menggunakan pg-promise?

Linda Hamilton
Lepaskan: 2024-10-30 14:03:03
asal
194 orang telah melayarinya

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

Sisipan Berbilang Baris dengan pg-promise

Memasukkan berbilang baris ke dalam jadual pangkalan data dengan satu pertanyaan boleh meningkatkan prestasi dengan ketara, terutamanya apabila berurusan dengan set data yang besar. Pg-promise, pembina pertanyaan SQL yang berkuasa dan perpustakaan pelaksana, menyediakan cara yang mudah dan cekap untuk melakukan sisipan berbilang baris.

Sisipan Berbilang Baris dengan Pembantu

Untuk memasukkan berbilang baris dengan pg-promise, anda boleh menggunakan ruang nama pembantu. Ruang nama ini menyediakan satu set fungsi utiliti yang memudahkan untuk membina pertanyaan SQL boleh parameterizable.

<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>
Salin selepas log masuk

Kelas ColumnSet mentakrifkan lajur yang hendak disisipkan, manakala fungsi sisipan mengambil nilai data untuk dimasukkan dan menjana pertanyaan SQL. Pendekatan ini berprestasi tinggi dan membenarkan sisipan satu baris dan berbilang baris.

Perlindungan Suntikan SQL

Mengenai soalan sampingan perlindungan suntikan SQL, ia adalah penting untuk memahami bahawa menggunakan ruang letak ($1, $2, dsb.) tidak menjamin perlindungan dengan sendirinya. Adalah penting untuk menggabungkan ruang letak dengan pengesahan input dan sanitasi yang betul untuk mengelakkan arahan SQL yang berniat jahat daripada dilaksanakan. Pg-promise menggunakan pendekatan ini secara lalai, menyediakan cara selamat untuk memasukkan data ke dalam pangkalan data anda.

Pertimbangan dan Tambahan Tambahan

  • ID Pengembalian : Untuk mendapatkan semula ID rekod yang baru dimasukkan, tambahkan id RETURNING pada pertanyaan anda dan laksanakannya dengan kaedah peta untuk menukar keputusan kepada tatasusunan integer.
  • Import Data Besar: Untuk mengimport set data yang sangat besar, pertimbangkan untuk menggunakan ciri Import Data yang disediakan oleh pg-promise.
  • Mengoptimumkan Kelajuan: Penjanaan pertanyaan boleh dibungkus ke dalam fungsi untuk memastikan bahawa ia adalah dilakukan sekali sahaja, meningkatkan lagi kelajuan pelaksanaan.

Kesimpulannya, ruang nama pembantu pg-promise memudahkan untuk melakukan sisipan berbilang baris, melindungi daripada suntikan SQL sambil mengoptimumkan prestasi.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melakukan sisipan berbilang baris dengan cekap dalam pangkalan data PostgreSQL menggunakan pg-promise?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!