首頁 >後端開發 >Golang >如何使用 Go、GORM 和 pgx 函式庫無循環地將 CSV 資料批次插入 PostgreSQL?

如何使用 Go、GORM 和 pgx 函式庫無循環地將 CSV 資料批次插入 PostgreSQL?

Susan Sarandon
Susan Sarandon原創
2024-10-27 00:02:30303瀏覽

How to Bulk Insert CSV Data into PostgreSQL Using Go, GORM, and the pgx Library Without Loops?

使用Go 和GORM 在不使用For 循環的情況下將CSV 資料插入PostgreSQL

在這種情況下,您有一個CSV 文件,其中包含要批次插入到PostgreSQL 表中的資料使用Go 和GORM ORM,而不使用for 迴圈或SQL 原始查詢。

可以利用pgx 函式庫來完成此任務,如下列程式碼片段所示:

<code class="go">package main

import (
    "context"
    "database/sql"
    "fmt"
    "os"

    "github.com/jackc/pgx/v4/pgxpool"
)

func main() {
    filename := "foo.csv"
    dbconn, err := pgxpool.Connect(context.Background(), os.Getenv("DATABASE_URL"))
    if err != nil {
        panic(err)
    }
    defer dbconn.Close()

    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>

In此程式碼:

  1. 導入pgx/v4 和pgxpool庫,以使用DATABASE_URL 環境變數建立到PostgreSQL 資料庫的連接池。
  2. CSV 檔案(“foo.csv”) ") 開啟進行讀取。
  3. CopyFrom 方法用於將CSV 資料複製到csv_test 表中。
  4. CopyFrom 方法用於將CSV 資料複製到csv_test 表中。(FORMAT csv) 參數指定資料格式。
最後,受複製操作影響的行數被印到控制台。

以上是如何使用 Go、GORM 和 pgx 函式庫無循環地將 CSV 資料批次插入 PostgreSQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn