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
DDDOriginal
2025-01-02 14:07:40366Durchsuche

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 (?, ?, ?)"
  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)
    }
  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...)

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!

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