Maison >développement back-end >Golang >Comment puis-je insérer efficacement plusieurs lignes de données dans Go ?

Comment puis-je insérer efficacement plusieurs lignes de données dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 07:36:10358parcourir

How Can I Efficiently Insert Multiple Data Rows in Go?

Insertion efficace de plusieurs données dans Go

Dans les opérations de base de données, il est souvent avantageux d'insérer plusieurs lignes de données simultanément pour des raisons d'efficacité. Go propose plusieurs méthodes pour y parvenir.

Une approche consiste à utiliser la fonction db.Prepare pour créer une instruction préparée. En utilisant des instructions préparées, vous pouvez éviter l'injection SQL et améliorer les performances. Pour insérer plusieurs lignes en une seule exécution à l'aide d'une instruction préparée, suivez ces étapes :

  1. Créez une chaîne SQL avec l'instruction INSERT INTO et des espaces réservés pour les valeurs. Par exemple :
sqlStr := "INSERT INTO test(n1, n2, n3) VALUES (?, ?, ?)"
  1. Créez une tranche de cartes pour contenir les données à insérer :
data := []map[string]string{
   {"v1":"1", "v2":"1", "v3":"1"},
   {"v1":"2", "v2":"2", "v3":"2"},
   {"v1":"3", "v2":"3", "v3":"3"},
}
  1. Parcourez la tranche et ajoutez les valeurs à l'instruction préparée espaces réservés.
vals := []interface{}{}

for _, row := range data {
    vals = append(vals, row["v1"], row["v2"], row["v3"])
}
  1. Il serait nécessaire de couper la dernière virgule de sqlStr pour préparer correctement l'instruction :
//trim the last ,
sqlStr = sqlStr[0:len(sqlStr)-1]
  1. Préparez le avec le sqlStr mis à jour.
stmt, _ := db.Prepare(sqlStr)
  1. Exécuter la déclaration avec les valeurs collectées :
res, _ := stmt.Exec(vals...)

En utilisant cette approche, vous pouvez insérer efficacement plusieurs lignes de données dans une base de données tout en garantissant la sécurité et en réduisant le nombre d'exécutions de la base 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