Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memasukkan Data CSV secara Pukal ke dalam PostgreSQL dengan Cekap Menggunakan Go Without For Loops?

Bagaimana untuk Memasukkan Data CSV secara Pukal ke dalam PostgreSQL dengan Cekap Menggunakan Go Without For Loops?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 06:52:31327semak imbas

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

Sisipan Data Pukal yang Cekap daripada CSV ke PostgreSQL menggunakan Go (Tanpa Untuk Gelung)

Dalam Go, arahan Postgres COPY menyediakan cara yang cekap untuk memasukkan data secara pukal daripada fail CSV ke dalam pangkalan data PostgreSQL. Begini cara untuk mencapai ini tanpa menggunakan sebarang gelung:

Langkah 1: Wujudkan Sambungan Pangkalan Data

Tubuhkan sambungan pangkalan data menggunakan perpustakaan pgx. Ini penting untuk mengakses pangkalan data dan melaksanakan arahan.

Langkah 2: Buka Fail CSV

Buka fail CSV yang mengandungi data yang akan dimasukkan. Pastikan fail boleh diakses oleh aplikasi anda.

Langkah 3: Laksanakan Perintah COPY

Laksanakan kaedah PgConn().CopyFrom() untuk memulakan pemindahan data daripada fail CSV ke jadual pangkalan data. Berikut ialah contoh:

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

Pecahan Kod:

  • Pembolehubah pertanyaan mentakrifkan perintah COPY yang akan dilaksanakan.
  • Fungsi utama() mewujudkan sambungan ke pangkalan data menggunakan dbpool, membuka fail CSV dan melaksanakan perintah COPY lanjutan menggunakan PgConn().CopyFrom().
  • Pembolehubah res menyimpan hasil pelaksanaan , termasuk bilangan baris yang terjejas.

Faedah:

  • Kecekapan: Perintah COPY sangat cekap untuk pukal sisipan data, mengelakkan overhed yang tidak perlu berbanding pendekatan berasaskan gelung.
  • Konkurensi: pgxpool membenarkan sambungan serentak, membolehkan operasi selari untuk pemprosesan data yang lebih pantas.
  • Keselamatan Jenis: pgx memastikan keselamatan jenis apabila melaksanakan arahan COPY, memastikan integriti data.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data CSV secara Pukal ke dalam PostgreSQL dengan Cekap Menggunakan Go Without For Loops?. 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