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

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

Susan Sarandon
發布: 2024-10-27 00:02:30
原創
307 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板