Zeilen aus STDIN in PostgreSQL importieren
In Python bietet das Unterprozessmodul eine praktische Möglichkeit, Daten mithilfe von COPY aus STDIN in PostgreSQL zu schreiben Befehl. Um dieselbe Funktionalität in Go zu erreichen, ist jedoch ein anderer Ansatz erforderlich.
Die offizielle Dokumentation für das Paket github.com/lib/pq bietet ein Beispiel dafür, wie Datensätze mithilfe der CopyIn-Funktion direkt aus STDIN importiert werden. Hier ist eine angepasste Version des bereitgestellten Codes:
<code class="go">package main import ( "database/sql" "fmt" "log" "github.com/lib/pq" ) func main() { records := [][]string{ {"Rob", "Pike"}, {"Ken", "Thompson"}, {"Robert", "Griesemer"}, } db, err := sql.Open("postgres", "dbname=postgres user=postgres password=postgres") if err != nil { log.Fatalf("open: %v", err) } if err = db.Ping(); err != nil { log.Fatalf("open ping: %v", err) } defer db.Close() txn, err := db.Begin() if err != nil { log.Fatalf("begin: %v", err) } stmt, err := txn.Prepare(pq.CopyIn("test", "first_name", "last_name")) if err != nil { log.Fatalf("prepare: %v", err) } for _, r := range records { _, err = stmt.Exec(r[0], r[1]) if err != nil { log.Fatalf("exec: %v", err) } } _, err = stmt.Exec() if err != nil { log.Fatalf("exec: %v", err) } err = stmt.Close() if err != nil { log.Fatalf("stmt close: %v", err) } err = txn.Commit() if err != nil { log.Fatalf("commit: %v", err) } log.Println("Records successfully imported") }</code>
Dieser überarbeitete Code verwendet eine Transaktion, um die Eigenschaften Atomizität, Konsistenz, Isolation und Haltbarkeit (ACID) während des Importvorgangs sicherzustellen. Mit der CopyIn-Funktion können Sie den Namen der Zieltabelle und die Spalten angeben, in die die Daten eingefügt werden.
Die bereitgestellten Beispieldaten werden dann mithilfe vorbereiteter Anweisungen in die „Test“-Tabelle eingefügt. Vorbereitete Anweisungen verbessern die Leistung, indem sie die SQL-Abfrage vorkompilieren und so den mit dem Parsen und Planen verbundenen Aufwand reduzieren.
Sobald alle Datensätze eingefügt sind, wird die Transaktion festgeschrieben und die Daten werden dauerhaft in der Datenbank gespeichert.
Das obige ist der detaillierte Inhalt vonWie importiere ich Zeilen von STDIN in Go in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!