Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh memasukkan data secara pukal daripada fail CSV ke dalam PostgreSQL dengan cekap menggunakan Go tanpa gelung for?

Bagaimanakah saya boleh memasukkan data secara pukal daripada fail CSV ke dalam PostgreSQL dengan cekap menggunakan Go tanpa gelung for?

Patricia Arquette
Lepaskan: 2024-10-29 13:09:03
asal
315 orang telah melayarinya

How can I efficiently bulk insert data from a CSV file into PostgreSQL using Go without a for loop?

Sisipan Pukal daripada CSV ke dalam PostgreSQL menggunakan Go without For Loop

Memasukkan volum besar data daripada fail CSV ke dalam pangkalan data PostgreSQL boleh memakan masa apabila menggunakan gelung for. Pendekatan yang lebih cekap ialah menggunakan perpustakaan pgx untuk melaksanakan operasi salinan pukal.

Menggunakan pgx untuk Sisipan Pukal

Untuk mencapainya, anda boleh mengikuti langkah berikut:

  1. Import perpustakaan pgx dan wujudkan sambungan pangkalan data.
  2. Buka fail CSV dan sediakan pembaca.
  3. Mulakan objek CopyFrom menggunakan kaedah CopyFrom bagi pgx.Conn().
  4. Lepaskan pembaca fail CSV sebagai sumber data kepada objek CopyFrom.
  5. Nyatakan nama jadual destinasi dalam format COPY destination_table FROM STDIN (FORMAT csv).
  6. Laksanakan objek CopyFrom untuk melakukan pemasukan pukal.

Contoh Kod

Kod Go berikut menunjukkan cara memasukkan data secara pukal daripada fail CSV ke dalam pangkalan data PostgreSQL menggunakan pgx:

<code class="go">import (
    "context"
    "fmt"
    "os"

    "github.com/jackc/pgx/v5"
)

func main() {
    filename := "foo.csv"
    dbconn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
    if err != nil {
        panic(err)
    }
    defer dbconn.Release()
    f, err := os.Open(filename)
    if err != nil {
        panic(err)
    }
    defer func() { _ = f.Close() }()
    res, err := dbconn.Conn().PgConn().CopyFrom(context.Background(), f, "COPY csv_test FROM STDIN (FORMAT csv)")
    if err != nil {
        panic(err)
    }
    fmt.Print(res.RowsAffected())
}</code>
Salin selepas log masuk

Dengan menggunakan pendekatan ini, anda boleh memasukkan data secara pukal secara pukal daripada fail CSV yang besar tanpa overhed gelung for. Kaedah ini amat berguna untuk mengendalikan set data yang besar dan memastikan prestasi pemuatan data yang lebih pantas.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan data secara pukal daripada fail CSV ke dalam PostgreSQL dengan cekap menggunakan Go tanpa gelung for?. 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