En Java, l'exécution de plusieurs instructions SQL dans un lot peut être réalisée via les méthodes PreparedStatement etexecuteBatch(). Mais comment pouvons-nous accomplir la même chose en utilisant le package base de données/sql de Go ?
Le package base de données/sql fournit une fonction Exec qui peut exécuter des instructions SQL. Cependant, cela ne nécessite qu’un seul ensemble d’arguments. Pour regrouper plusieurs instructions, nous pouvons utiliser une fonction variadique et construire une seule instruction SQL qui inclut toutes les instructions individuelles à exécuter.
Voici un exemple :
func bulkInsert(unsavedRows []*ExampleRowStruct) error { var ( valueStrings []string valueArgs []interface{} ) 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 }
Ce code construit un instruction SQL unique qui insère toutes les lignes dans la base de données. En passant les arguments (valeurs) de l'instruction individuelle en tant que paramètres variadiques, nous pouvons exécuter plusieurs instructions en un seul aller-retour sur le réseau. Des tests ont montré que cette approche peut être beaucoup plus rapide que l'utilisation des méthodes Begin, Prepare et Commit pour le traitement par lots d'instructions SQL.
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!