Maison  >  Article  >  développement back-end  >  Comment insérer en masse des données CSV dans PostgreSQL à l'aide de Go, GORM et de la bibliothèque pgx sans boucles ?

Comment insérer en masse des données CSV dans PostgreSQL à l'aide de Go, GORM et de la bibliothèque pgx sans boucles ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 00:02:30203parcourir

How to Bulk Insert CSV Data into PostgreSQL Using Go, GORM, and the pgx Library Without Loops?

Insertion de données CSV dans PostgreSQL sans boucles For à l'aide de Go et GORM

Dans ce scénario, vous disposez d'un fichier CSV contenant des données que vous souhaitez insérer en masse dans une table PostgreSQL en utilisant Go et GORM ORM, sans utiliser de boucles for ou de requêtes brutes SQL.

La bibliothèque pgx peut être utilisée pour cette tâche, comme démontré dans l'extrait de code suivant :

<code class="go">package main

import (
    "context"
    "database/sql"
    "fmt"
    "os"

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

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

    f, err := os.Open(filename)
    if err != nil {
        panic(err)
    }
    defer func() { _ = f.Close() }()

    res, err := dbconn.Conn().PgConn().CopyFrom(context.Background(), f, "COPY csv_test FROM STDIN (FORMAT csv)")
    if err != nil {
        panic(err)
    }

    fmt.Print(res.RowsAffected())
}</code>

Dans ce code :

  1. Les bibliothèques pgx/v4 et pgxpool sont importées pour établir un pool de connexion à la base de données PostgreSQL à l'aide de la variable d'environnement DATABASE_URL.
  2. Le fichier CSV ("foo.csv ") est ouvert en lecture.
  3. La méthode CopyFrom est utilisée pour copier les données CSV dans la table csv_test. L'argument (FORMAT csv) spécifie le format des données.
  4. Enfin, le nombre de lignes affectées par l'opération de copie est imprimé sur la console.

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