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

Bagaimana untuk Mengimport Baris ke PostgreSQL dari STDIN dalam Go?

Linda Hamilton
Lepaskan: 2024-10-24 14:20:53
asal
903 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan