Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengimport Baris ke PostgreSQL dari STDIN dalam Go?

Bagaimana untuk Mengimport Baris ke PostgreSQL dari STDIN dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 14:20:53740semak imbas

How to Import Rows to PostgreSQL from STDIN in Go?

Mengimport Baris ke PostgreSQL daripada STDIN

Dalam Python, modul subproses menyediakan cara yang mudah untuk menulis data ke PostgreSQL daripada STDIN menggunakan COPY perintah. Walau bagaimanapun, mencapai fungsi yang sama dalam Go melibatkan pendekatan yang berbeza.

Dokumentasi rasmi untuk pakej github.com/lib/pq menawarkan contoh cara mengimport rekod terus daripada STDIN menggunakan fungsi CopyIn. Berikut ialah versi penyesuaian kod yang disediakan:

<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>

Kod yang disemak ini menggunakan transaksi untuk memastikan sifat atomicity, konsistensi, pengasingan dan ketahanan (ACID) semasa proses import. Fungsi CopyIn membolehkan anda menentukan nama jadual sasaran dan lajur yang akan dimasukkan data.

Data sampel yang disediakan kemudiannya dimasukkan ke dalam jadual "ujian" menggunakan pernyataan yang disediakan. Penyata yang disediakan meningkatkan prestasi dengan menyusun awal pertanyaan SQL, mengurangkan overhed yang dikaitkan dengan penghuraian dan perancangan.

Setelah semua rekod dimasukkan, transaksi dilakukan dan data disimpan secara kekal dalam pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Mengimport Baris ke PostgreSQL dari STDIN dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn