Maison > développement back-end > Golang > le corps du texte

Comment insérer efficacement des données CSV dans PostgreSQL à l'aide de Go Without For Loops ?

Mary-Kate Olsen
Libérer: 2024-10-29 06:52:31
original
219 Les gens l'ont consulté

How to Efficiently Bulk Insert CSV Data into PostgreSQL Using Go Without For Loops?

Insertion efficace de données en masse de CSV vers PostgreSQL à l'aide de Go (sans boucles For)

Dans Go, la commande COPY de Postgres fournit un moyen efficace pour insérer en masse des données d'un fichier CSV dans une base de données PostgreSQL. Voici comment y parvenir sans utiliser de boucles for :

Étape 1 : Établir une connexion à la base de données

Établissez une connexion à la base de données à l'aide de la bibliothèque pgx. Ceci est essentiel pour accéder à la base de données et exécuter les commandes.

Étape 2 : Ouvrez le fichier CSV

Ouvrez le fichier CSV contenant les données à insérer. Assurez-vous que le fichier est accessible par votre application.

Étape 3 : Exécutez la commande COPY

Exécutez la méthode PgConn().CopyFrom() pour lancer le transfert de données depuis le fichier CSV dans la table de la base de données. Voici un exemple :

<code class="go">import (
    "context"
    "fmt"
    "io"

    "github.com/jackc/pgx/v4/pgxpool"
)

const query = "COPY csv_test FROM STDIN (FORMAT csv)"

func main() {
    dbpool, err := pgxpool.Connect(context.Background(), os.Getenv("DATABASE_URL"))
    if err != nil {
        panic(err)
    }
    defer dbpool.Close()

    f, err := os.Open("foo.csv")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    res, err := dbpool.Conn().PgConn().CopyFrom(context.Background(), f, query)
    if err != nil {
        panic(err)
    }
    fmt.Print(res.RowsAffected())
}</code>
Copier après la connexion

Décomposition du code :

  • La variable de requête définit la commande COPY qui sera exécutée.
  • La fonction main() établit une connexion à la base de données à l'aide de dbpool, ouvre le fichier CSV et exécute la commande COPY étendue à l'aide de PgConn().CopyFrom().
  • La variable res stocke le résultat de l'exécution , y compris le nombre de lignes concernées.

Avantages :

  • Efficacité : La commande COPY est très efficace pour le traitement en masse insertion de données, évitant ainsi une surcharge inutile par rapport aux approches basées sur des boucles.
  • Concurrence : pgxpool permet des connexions simultanées, permettant des opérations parallèles pour un traitement des données plus rapide.
  • Sécurité de type : pgx assure la sécurité de type lors de l'exécution de la commande COPY, garantissant ainsi l'intégrité des 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!