Heim > Backend-Entwicklung > Golang > Wie stapele ich SQL-Anweisungen im Paket „database/sql' von Go?

Wie stapele ich SQL-Anweisungen im Paket „database/sql' von Go?

DDD
Freigeben: 2025-01-02 14:07:40
Original
362 Leute haben es durchsucht

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

Datenbank/SQL-Batchverarbeitung von SQL-Anweisungen

Frage:

In Java, Batchverarbeitung von SQL-Anweisungen mit dem Datenbank/SQL-Paket ist unkompliziert. Wie können Sie eine ähnliche Funktionalität in Go erreichen?

: Antwort:

Das Datenbank-/SQL-Paket in Go ermöglicht Ihnen das Stapeln von SQL-Anweisungen mithilfe der db.Exec-Funktion. die eine variable Anzahl von Argumenten benötigt. So können Sie Batching in Go implementieren:

  1. Erstellen Sie die SQL-Anweisung:

    Erstellen Sie eine Zeichenfolge, die die SQL-Anweisung mit Platzhaltern für die enthält Werte, die Sie einfügen möchten. Zum Beispiel:

    stmt := "INSERT INTO my_table (field1, field2, field3) VALUES (?, ?, ?)"
    Nach dem Login kopieren
  2. Argumente auflösen:

    Erstellen Sie separate Slices für die Werte, die Sie einfügen möchten. Hängen Sie für jede Zeile die Werte an diese Slices an.

    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)
    }
    Nach dem Login kopieren
  3. Führen Sie den Stapel aus:

    Verwenden Sie zum Ausführen die Funktion db.Exec die gestapelte SQL-Anweisung und übergibt das Argument Slices.

    _, err := db.Exec(stmt, valueArgs...)
    Nach dem Login kopieren

Diese Methode führt den Batch-Vorgang in einem einzigen Netzwerk-Roundtrip durch und ist somit effizient für das Einfügen großer Datenmengen.

Das obige ist der detaillierte Inhalt vonWie stapele ich SQL-Anweisungen im Paket „database/sql' von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage