Lors d'une tentative d'insertion en masse dans une base de données, la création manuelle d'instructions SQL peut introduire des erreurs et des goulots d'étranglement en termes de performances. L'exploitation de la fonctionnalité pgx.Conn.CopyFrom de pgx fournit une solution efficace qui automatise le processus.
Dans le code fourni, l'instruction SQL est construite en concaténant des chaînes, qui peut entraîner des erreurs si le nombre de paramètres dollar ($) ne correspond pas au nombre d'arguments transmis à la fonction conn.Exec. De plus, la concaténation de chaînes pour les entrées volumineuses peut être inefficace et entraîner des problèmes de mémoire.
La méthode CopyFrom de pgx simplifie l'insertion de données en masse en tirant parti du protocole de copie PostgreSQL. Il prend trois arguments :
L'interface CopyFromSource permet une flexibilité dans la spécification de la source de données. Il peut être implémenté à l'aide d'une tranche de tranches de valeurs d'interface (comme dans l'exemple fourni), d'un string.Reader contenant des données CSV ou d'une implémentation personnalisée.
Vous trouverez ci-dessous un Extrait de code révisé qui démontre l'utilisation de CopyFrom :
<code class="go">rows := [][]interface{}{ {"abc", 10}, {"dns", 11}, {"qwe", 12}, {"dss", 13}, {"xcmk", 14}, } _, err := conn.CopyFrom( pgx.Identifier{"keys"}, []string{"keyval", "lastval"}, pgx.CopyFromRows(rows), )</code>
Ce code insérera efficacement les lignes en masse dans la table « clés », améliorant considérablement les performances et réduisant le risque d'erreurs par rapport à la création manuelle de 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!