Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Penyata SQL Berkelompok dalam Go menggunakan `pangkalan data/sql`?

Bagaimana untuk Melaksanakan Penyata SQL Berkelompok dalam Go menggunakan `pangkalan data/sql`?

DDD
DDDasal
2024-12-17 16:42:14119semak imbas

How to Execute Batched SQL Statements in Go using `database/sql`?

Melaksanakan Penyata SQL Berkelompok dalam Go Menggunakan pangkalan data/sql

Masalah:

Dalam Go, bagaimana seseorang boleh melaksanakan berbilang Penyataan SQL dalam satu operasi pangkalan data menggunakan pangkalan data/sql pakej?

Penyelesaian:

Pakej pangkalan data/sql menyediakan fungsi Exec() serba boleh yang membenarkan penyata SQL berkumpulan. Begini cara anda boleh melaksanakannya:

func BulkInsert(unsavedRows []*ExampleRowStruct) error {
    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows)*3)
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Column1)
        valueArgs = append(valueArgs, post.Column2)
        valueArgs = append(valueArgs, post.Column3)
    }
    stmt := fmt.Sprintf("INSERT INTO my_sample_table (column1, column2, column3) VALUES %s",
        strings.Join(valueStrings, ","))
    _, err := db.Exec(stmt, valueArgs...)
    return err
}

Kelebihan:

  • Pendekatan ini mengurangkan perjalanan pergi balik rangkaian dengan melaksanakan semua pernyataan dalam satu permintaan.
  • Ia cekap untuk memasukkan berbilang baris data, seperti yang ditunjukkan dalam contoh.
  • Ia mudah untuk dilaksanakan, kerana ia memanfaatkan sifat variadik fungsi Exec().

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penyata SQL Berkelompok dalam Go menggunakan `pangkalan data/sql`?. 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