Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Sisipan Pukal dengan Cekap dalam Postgres dengan Go Menggunakan pgx?
MASUKKAN Pukal dalam Postgres dalam Go Menggunakan pgx: Diselesaikan
Dalam kod Go yang diberikan, anda membuat penyataan INSERT secara manual dan melaksanakan ia menggunakan pgx.Exec. Walau bagaimanapun, pendekatan ini boleh menjadi tidak cekap dan terdedah kepada ralat, terutamanya untuk sisipan pukal.
Pengenalan Isu
Mesej ralat "dijangka 10 argumen, mendapat 1" menunjukkan ketidakpadanan antara bilangan hujah yang disediakan dan yang dijangkakan oleh pangkalan data. Ralat ini timbul kerana anda sedang membina pernyataan INSERT secara manual dan mungkin telah membuat kesilapan dalam kiraan atau jujukan hujah.
Pendekatan Betul
Untuk melakukan sisipan pukal dengan cekap, memanfaatkan fungsi CopyFrom pgx, yang menggunakan protokol salinan PostgreSQL yang direka untuk operasi sedemikian. CopyFrom membolehkan anda memasukkan secara pukal baris daripada sumber ke dalam jadual.
Contoh Kod Menggunakan CopyFrom
package main import ( "context" "fmt" "log" "github.com/jackc/pgx/v4" ) const ( dbUrl = "db url..." ) type tempKey struct { keyVal string lastKey int } func main() { conn, err := pgx.Connect(context.Background(), dbUrl) if err != nil { log.Fatalf("Error connecting to the database: %v", err) } defer conn.Close(context.Background()) data := []tempKey{ {keyVal: "abc", lastKey: 10}, {keyVal: "dns", lastKey: 11}, {keyVal: "qwe", lastKey: 12}, {keyVal: "dss", lastKey: 13}, {keyVal: "xcmk", lastKey: 14}, } copyCount, err := conn.CopyFrom( context.Background(), pgx.Identifier{"keys"}, // Table name []string{"keyval", "lastval"}, // Column names pgx.CopyFromRows(data), // Copy from a slice of structs ) if err != nil { log.Fatalf("Error copying data to the database: %v", err) } fmt.Printf("%d rows copied successfully.\n", copyCount) }
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Sisipan Pukal dengan Cekap dalam Postgres dengan Go Menggunakan pgx?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!