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
Lepaskan: 2024-10-29 06:52:31
asal
296 orang telah melayarinya

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

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!

sumber:php.cn
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