Go、GORM、pgx ライブラリを使用してループなしで CSV データを PostgreSQL に一括挿入する方法

Susan Sarandon
リリース: 2024-10-27 00:02:30
オリジナル
202 人が閲覧しました

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

Go と GORM を使用した For ループなしの CSV データの PostgreSQL への挿入

このシナリオでは、PostgreSQL テーブルに一括挿入するデータを含む CSV ファイルがあります。 for ループや SQL 生クエリを使用せずに、Go と GORM ORM を使用します。

次のコード スニペットに示すように、このタスクには 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 テーブルにコピーします。 (FORMAT csv) 引数はデータ形式を指定します。
  4. 最後に、コピー操作の影響を受ける行数がコンソールに出力されます。

以上がGo、GORM、pgx ライブラリを使用してループなしで CSV データを PostgreSQL に一括挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!