Wie importiere ich Zeilen aus STDIN mit Go in PostgreSQL?

Susan Sarandon
Freigeben: 2024-10-24 16:06:01
Original
397 Leute haben es durchsucht

How to Import Rows into PostgreSQL from STDIN Using Go?

Zeilen aus STDIN mit Go in PostgreSQL importieren

In Go können Sie Zeilen aus der Standardeingabe (STDIN) mit pq in PostgreSQL importieren Paket. Dieser Ansatz speist die Daten direkt in die Datenbank ein, ohne dass Zwischendateien erforderlich sind.

Um einen direkten Zeilenimport aus STDIN zu erreichen, befolgen Sie diese Schritte:

  1. Öffnen Sie eine PostgreSQL-Verbindung :Stellen Sie mit der sql.Open-Funktion eine Verbindung zu Ihrer PostgreSQL-Datenbank her.
  2. Eine Transaktion starten:Initiieren Sie eine Datenbanktransaktion mit der Begin-Funktion, um mehrere Anweisungen zusammenzufassen.
  3. Kopieranweisung vorbereiten: Erstellen Sie eine vorbereitete Anweisung zum Kopieren von Daten mit pq.CopyIn. Diese Anweisung gibt den Namen der Zieltabelle und die zu importierenden Spalten an.
  4. Zeilen importieren: Führen Sie die vorbereitete Anweisung iterativ für jede Datenzeile aus, die Sie importieren möchten. Verwenden Sie die Exec-Funktion, um jede Zeile an die Datenbank zu senden.
  5. Kopieranweisung beenden: Nachdem Sie alle Zeilen hinzugefügt haben, führen Sie die vorbereitete Anweisung erneut ohne Argumente aus, um den Importvorgang abzuschließen.
  6. Vorbereitete Anweisung schließen: Mit der vorbereiteten Anweisung verknüpfte Ressourcen durch Aufruf der Close-Methode freigeben.
  7. Transaktion festschreiben: Die Transaktion festschreiben, um die Änderungen dauerhaft zu machen in der Datenbank.

Beispielcode:

Hier ist ein Codebeispiel, das den Zeilenimport aus STDIN mit Go demonstriert:

<code class="go">package main

import (
    "database/sql"
    "fmt"
    "io"
    "log"

    "github.com/lib/pq"
)

func main() {
    db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=mysecret dbname=mydatabase")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    rows := [][]string{
        {"Rob", "Pike"},
        {"Ken", "Thompson"},
        {"Robert", "Griesemer"},
    }

    txn, err := db.Begin()
    if err != nil {
        log.Fatal(err)
    }

    stmt, err := txn.Prepare(pq.CopyIn("test", "first_name", "last_name"))
    if err != nil {
        log.Fatal(err)
    }

    for _, r := range rows {
        if _, err = stmt.Exec(r[0], r[1]); err != nil {
            log.Fatal(err)
        }
    }

    if _, err = stmt.Exec(); err != nil {
        log.Fatal(err)
    }

    if err = stmt.Close(); err != nil {
        log.Fatal(err)
    }

    if err = txn.Commit(); err != nil {
        log.Fatal(err)
    }

    fmt.Println("Rows imported successfully.")
}</code>
Nach dem Login kopieren

Indem Sie diese Schritte befolgen und das pq-Paket verwenden, können Sie Daten effizient direkt aus STDIN in Ihren Go-Programmen in PostgreSQL importieren.

Das obige ist der detaillierte Inhalt vonWie importiere ich Zeilen aus STDIN mit Go in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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