嘗試在資料庫中批次插入時,手動編寫SQL 語句可能會引入錯誤和效能瓶頸。利用 pgx 的 pgx.Conn.CopyFrom 功能提供了一個有效的解決方案,可以自動執行該過程。
在提供的程式碼中,SQL 語句是透過連接字串來建構的,這如果美元參數($ 符號)的數量與傳遞給conn.Exec函數的參數數量不匹配,可能會導致錯誤。此外,大輸入的字串串聯可能效率低並導致記憶體問題。
pgx 的 CopyFrom 方法透過利用 PostgreSQL 複製協定簡化大量資料插入。它需要三個參數:
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>
此程式碼將有效地將行批次插入「key」表中,與手動SQL 製作相比,顯著提高效能並減少出錯的可能性。
以上是如何在 Go 中使用 pgx 將資料批次插入 Postgres 中:綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!