Wie kann man CSV-Daten mithilfe von Go Without For-Schleifen effizient massenhaft in PostgreSQL einfügen?

Mary-Kate Olsen
Freigeben: 2024-10-29 06:52:31
Original
219 Leute haben es durchsucht

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

Effiziente Massendateneinfügung von CSV nach PostgreSQL mit Go (ohne For-Schleifen)

In Go bietet der Postgres COPY-Befehl eine effiziente Möglichkeit um Daten aus einer CSV-Datei massenhaft in eine PostgreSQL-Datenbank einzufügen. So erreichen Sie dies, ohne for-Schleifen zu verwenden:

Schritt 1: Datenbankverbindung herstellen

Stellen Sie eine Datenbankverbindung mithilfe der pgx-Bibliothek her. Dies ist wichtig für den Zugriff auf die Datenbank und das Ausführen von Befehlen.

Schritt 2: Öffnen Sie die CSV-Datei

Öffnen Sie die CSV-Datei mit den einzufügenden Daten. Stellen Sie sicher, dass Ihre Anwendung auf die Datei zugreifen kann.

Schritt 3: COPY-Befehl ausführen

Führen Sie die Methode PgConn().CopyFrom() aus, um die Datenübertragung zu initiieren die CSV-Datei in die Datenbanktabelle. Hier ist ein Beispiel:

<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>
Nach dem Login kopieren

Aufschlüsselung des Codes:

  • Die Abfragevariable definiert den COPY-Befehl, der ausgeführt wird.
  • Die Funktion main() stellt mit dbpool eine Verbindung zur Datenbank her, öffnet die CSV-Datei und führt den erweiterten COPY-Befehl mit PgConn().CopyFrom() aus.
  • Die Variable res speichert das Ergebnis der Ausführung , einschließlich der Anzahl der betroffenen Zeilen.

Vorteile:

  • Effizienz: Der COPY-Befehl ist für Massenvorgänge äußerst effizient Dateneinfügung, wodurch unnötiger Overhead im Vergleich zu schleifenbasierten Ansätzen vermieden wird.
  • Parallelität: pgxpool ermöglicht gleichzeitige Verbindungen und ermöglicht so parallele Vorgänge für eine schnellere Datenverarbeitung.
  • Typsicherheit: pgx gewährleistet die Typsicherheit bei der Ausführung des COPY-Befehls und gewährleistet die Datenintegrität.

Das obige ist der detaillierte Inhalt vonWie kann man CSV-Daten mithilfe von Go Without For-Schleifen effizient massenhaft in PostgreSQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!