Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Batch Penyata SQL dalam Pakej `pangkalan data/sql` Go?

Bagaimana untuk Batch Penyata SQL dalam Pakej `pangkalan data/sql` Go?

DDD
DDDasal
2025-01-02 14:07:40387semak imbas

How to Batch SQL Statements in Go's `database/sql` Package?

Penyata SQL Batching Pangkalan Data/SQL

Soalan:

Di Java, penyata SQL batching dengan pakej pangkalan data/sql adalah mudah. Bagaimanakah anda boleh mencapai kefungsian yang sama dalam Go?

: Jawapan:

Pakej pangkalan data/sql dalam Go membolehkan anda menyusun pernyataan SQL menggunakan fungsi db.Exec, yang mengambil bilangan hujah yang berubah-ubah. Begini cara anda boleh melaksanakan batching dalam Go:

  1. Bina Pernyataan SQL:

    Buat rentetan yang mengandungi pernyataan SQL dengan pemegang tempat untuk nilai yang ingin anda masukkan. Contohnya:

    stmt := "INSERT INTO my_table (field1, field2, field3) VALUES (?, ?, ?)"
  2. Meletupkan Argumen:

    Buat kepingan berasingan untuk nilai yang ingin anda masukkan. Untuk setiap baris, tambahkan nilai pada kepingan ini.

    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows) * 3)
    
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Field1)
        valueArgs = append(valueArgs, post.Field2)
        valueArgs = append(valueArgs, post.Field3)
    }
  3. Laksanakan Kumpulan:

    Gunakan fungsi db.Exec untuk melaksanakan pernyataan SQL berkumpulan, menyampaikan hujah hirisan.

    _, err := db.Exec(stmt, valueArgs...)

Kaedah ini melaksanakan operasi batching dalam satu rangkaian pergi balik, menjadikannya cekap untuk memasukkan sejumlah besar data.

Atas ialah kandungan terperinci Bagaimana untuk Batch Penyata SQL dalam Pakej `pangkalan data/sql` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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