Maison > développement back-end > Golang > Comment exécuter des instructions SQL par lots dans Go à l'aide de « database/sql » ?

Comment exécuter des instructions SQL par lots dans Go à l'aide de « database/sql » ?

DDD
Libérer: 2024-12-17 16:42:14
original
118 Les gens l'ont consulté

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

Exécution d'instructions SQL par lots dans Go à l'aide de database/sql

Problème :

Dans Go, comment peut-on exécuter plusieurs Instructions SQL dans une seule opération de base de données à l'aide de la base de données/sql package ?

Solution :

Le package database/sql fournit une fonction Exec() polyvalente qui permet de regrouper des instructions SQL par lots. Voici comment vous pouvez l'implémenter :

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
}
Copier après la connexion

Avantages :

  • Cette approche réduit les allers-retours sur le réseau en exécutant toutes les instructions en une seule requête.
  • Il est efficace pour insérer plusieurs lignes de données, comme démontré dans le exemple.
  • Il est facile à mettre en œuvre, car il exploite la nature variadique de la fonction Exec().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal