Postgres 中的批次插入:綜合指南
批次插入是資料庫管理中的常見操作,提供了一種高效的方法來插入一次記錄大量記錄。與單獨插入記錄相比,這可以顯著減少處理時間。
在提供的程式碼片段中,您在嘗試使用 pgx(Go 的 PostgreSQL 資料庫驅動程式)將資料批次插入「keys」表時遇到問題。錯誤「expected 10 arguments, 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中文網其他相關文章!