Postgres での一括挿入: 総合ガイド
一括挿入はデータベース管理における一般的な操作であり、大量のレコードを一度に。これにより、レコードを個別に挿入する場合と比較して、処理時間を大幅に短縮できます。
提供されたコード スニペットでは、Go 用 PostgreSQL データベース ドライバーである pgx を使用して「keys」テーブルにデータを一括挿入しようとしているときに問題が発生しています。 。 「expected 10 argument, got 1」というエラーは、実行中の SQL ステートメントが、渡される値の数に対して正しくフォーマットされていないことを示しています。
この問題に対処するには、組み込みのpgx.Conn.CopyFrom 関数。一括挿入操作用に特別に設計されています。 CopyFrom は PostgreSQL コピー プロトコルを利用しており、SQL ステートメントを手動で作成する場合に比べて優れたパフォーマンスを提供します。
CopyFrom を使用した正しい実装は次のようになります。
<code class="go">// Define data to be inserted data := []struct { KeyVal string LastVal int }{ {"abc", 10}, {"dns", 11}, {"qwe", 12}, {"dss", 13}, {"xcmk", 14}, } // Establish connection to the database dbUrl := "..." conn, err := pgx.Connect(context.Background(), dbUrl) if err != nil { log.Fatalf("Error connecting to database: %v", err) } defer conn.Close(context.Background()) // Execute bulk insertion using CopyFrom copyCount, err := conn.CopyFrom( pgx.Identifier{"keys"}, []string{"keyval", "lastval"}, pgx.CopyFromRows(data), ) if err != nil { log.Fatalf("Error inserting data: %v", err) } fmt.Printf("Inserted %d rows into the keys table.\n", copyCount)</code>
CopyFrom を利用することで、効率化できます。一括挿入操作が可能になり、パフォーマンスが大幅に向上します。予期しないエラーを避けるために、適切なスライスで列名を正しく指定し、データ スライスが適切な形式であることを確認してください。
以上がpgx を使用して Postgres で一括挿入操作を効率的に実行し、「引数が 10 個必要ですが 1 個を受け取りました」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。