Maison >développement back-end >Golang >Comment insérer des données en masse dans Postgres à l'aide de pgx dans Go : un guide complet

Comment insérer des données en masse dans Postgres à l'aide de pgx dans Go : un guide complet

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 03:32:31669parcourir

How to Bulk Insert Data into Postgres Using pgx in Go: A Comprehensive Guide

Insérer en masse dans Postgres à l'aide de pgx dans Go : une solution complète

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.

Le problème avec la création manuelle de SQL

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.

Utilisation de la méthode CopyFrom de pgx

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 :

  1. tableName : Le nom de la table cible pour l'insertion.
  2. columnNames : Une tranche de chaînes spécifiant les noms des colonnes à insérer.
  3. rowSrc : un objet CopyFromSource qui génère les données à insérer.

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.

Exemple de code

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!

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