Maison >développement back-end >Golang >Comment regrouper les instructions SQL dans le package « database/sql » de Go ?

Comment regrouper les instructions SQL dans le package « database/sql » de Go ?

DDD
DDDoriginal
2025-01-02 14:07:40362parcourir

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

Database/SQL Batching SQL Statements

Question :

En Java, batching SQL instructions avec le package base de données/sql est simple. Comment pouvez-vous obtenir des fonctionnalités similaires dans Go ?

 : Réponse :

Le package base de données/sql dans Go vous permet de regrouper des instructions SQL à l'aide de la fonction db.Exec, qui prend un nombre variable d'arguments. Voici comment implémenter le traitement par lots dans Go :

  1. Construisez l'instruction SQL :

    Créez une chaîne contenant l'instruction SQL avec des espaces réservés pour le valeurs que vous souhaitez insérer. Par exemple :

    stmt := "INSERT INTO my_table (field1, field2, field3) VALUES (?, ?, ?)"
  2. Explosez les arguments :

    Créez des tranches distinctes pour les valeurs que vous souhaitez insérer. Pour chaque ligne, ajoutez les valeurs à ces tranches.

    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. Exécutez le lot :

    Utilisez la fonction db.Exec pour exécuter l'instruction SQL par lots, en passant les tranches d'argument.

    _, err := db.Exec(stmt, valueArgs...)

Ceci La méthode effectue l'opération de traitement par lots en un seul aller-retour sur le réseau, ce qui la rend efficace pour insérer de grandes quantités de données.

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!

Déclaration:
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