データベースへの一括挿入を試行する場合、SQL ステートメントを手動で作成すると、エラーやパフォーマンスのボトルネックが発生する可能性があります。 pgx の pgx.Conn.CopyFrom 機能を利用すると、プロセスを自動化する効率的なソリューションが提供されます。
提供されたコードでは、SQL ステートメントは文字列を連結することによって構築されます。ドルパラメータ ($ 記号) の数が conn.Exec 関数に渡される引数の数と一致しない場合、エラーが発生する可能性があります。さらに、大規模な入力の文字列連結は効率が悪く、メモリの問題を引き起こす可能性があります。
pgx の CopyFrom メソッドは、PostgreSQL コピー プロトコルを利用することで一括データの挿入を簡素化します。 3 つの引数を取ります:
CopyFromSource インターフェイスを使用すると、データ ソースを柔軟に指定できます。これは、インターフェイス値のスライスのスライス (提供された例のように)、CSV データを含む strings.Reader、またはカスタム実装を使用して実装できます。
以下はCopyFrom:
<code class="go">rows := [][]interface{}{ {"abc", 10}, {"dns", 11}, {"qwe", 12}, {"dss", 13}, {"xcmk", 14}, } _, err := conn.CopyFrom( pgx.Identifier{"keys"}, []string{"keyval", "lastval"}, pgx.CopyFromRows(rows), )</code>
の使用を示す改訂されたコード スニペット。このコードは行を「keys」テーブルに効率的に一括挿入し、手動で SQL を作成する場合と比較してパフォーマンスを大幅に向上させ、エラーの可能性を減らします。
以上がGo で pgx を使用して Postgres にデータを一括挿入する方法: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。