Heim > Backend-Entwicklung > Golang > Wie führe ich mit Go mehrzeilige Massenaktualisierungen in PostgreSQL durch?

Wie führe ich mit Go mehrzeilige Massenaktualisierungen in PostgreSQL durch?

Susan Sarandon
Freigeben: 2024-12-11 06:14:10
Original
738 Leute haben es durchsucht

How to Perform Multi-Row Bulk Updates in PostgreSQL with Go?

Massenaktualisierungen mehrerer Zeilen in PostgreSQL mit Go

Bei der Arbeit mit großen Datensätzen ist es häufig erforderlich, mehrere Zeilen in einer Datenbanktabelle zu aktualisieren in einem einzigen Arbeitsgang. Dadurch kann die Leistung optimiert und die Codekomplexität verringert werden. In PostgreSQL können Massenaktualisierungen mithilfe verschiedener Ansätze erreicht werden.

Ein Ansatz besteht darin, eine abgeleitete Tabelle zu verwenden, um einen Satz von zu aktualisierenden Werten zu erstellen. Mithilfe der FROM-Klausel können Sie die Werte für jede Zeile angeben, die aktualisiert werden muss. Zum Beispiel:

UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (1, 'FINISH', 1234),
                 (2, 'UNFINISH', 3124)
         ) v(id, column_a, column_b)
WHERE v.id = t.id;
Nach dem Login kopieren

Die abgeleitete Tabelle v enthält die Paare von (id, Column_a, Column_b), die die Aktualisierungen für jede Zeile darstellen. Die UPDATE-Anweisung verwendet dann die WHERE-Klausel, um die ID-Werte in v mit denen in der Zieltabelle t abzugleichen.

In Go können Sie diese Abfrage mithilfe einer vorbereiteten Anweisung ausführen:

const updateBulkSQL = `
UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (, , ),
                 (, , )
         ) v(id, column_a, column_b)
WHERE v.id = t.id;
`

func main() {
    db, err := sql.Open("postgres", "")
    if err != nil {
        // Handle error
    }

    stmt, err := db.Prepare(updateBulkSQL)
    if err != nil {
        // Handle error
    }

    _, err = stmt.Exec(1, "FINISH", 1234, 2, "UNFINISH", 3124)
    if err != nil {
        // Handle error
    }
}
Nach dem Login kopieren

Dieser Ansatz bietet eine präzise und effiziente Möglichkeit, Massenaktualisierungen in PostgreSQL durchzuführen, sodass Sie mehrere Zeilen in einer einzigen Abfrage aktualisieren können, ohne für jede Zeile separate Abfragen ausführen zu müssen.

Das obige ist der detaillierte Inhalt vonWie führe ich mit Go mehrzeilige Massenaktualisierungen in PostgreSQL durch?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage