如何使用 pyodbc 優化 MS SQL Server 中的批次插入操作?

Susan Sarandon
發布: 2024-11-02 22:44:30
原創
489 人瀏覽過

How can I optimize bulk insert operations in MS SQL Server using pyodbc?

使用pyodbc 最佳化MS SQL Server 中的批次插入操作

從Python 程式碼有效地將大量資料插入MS SQL Server 的挑戰使用pyodbc 需要仔細考慮。雖然迭代執行單一插入看似簡單,但它可能會導致嚴重的效能瓶頸,尤其是在處理超過 1,300,000 行的資料集時。

潛在的解決方案是利用 T-SQL BULK INSERT 命令,該命令可以顯著提高效能。加速資料攝取。但是,此方法要求資料檔案位於與 SQL Server 執行個體相同的電腦上,或位於伺服器可存取的網路位置。如果無法滿足此條件,則必須探索替代方案。

探索 pyodbc 的 Fast ExecuteMany 功能

Pyodbc 4.0.19 版本引進了強大的效能最佳化技術:Cursor# fast_executemany。透過啟用此功能,資料庫連線可以在到伺服器的單次往返中執行多個批次參數執行。

要利用 fast_executemany,只需將以下行新增至您的程式碼:

<code class="python">crsr.fast_executemany = True</code>
登入後複製

此設定可以顯著提高插入速度。在基準測試中,啟用 fast_executemany 後,在 1 秒多一點的時間內將 1000 行插入資料庫,而沒有此最佳化則需要 22 秒。

最佳化循環執行

除了使用 fast_executemany之外,還有其他策略可以微調循環的效能

  • 批次參數清單:不要迭代行並執行單獨的插入語句,而是考慮將資料分組並使用executemany同時插入多行。
  • 使用 Pandas DataFrame 進行批次插入:如果來源資料儲存在 Pandas 中DataFrame,您可以利用pyodbc的to_sql()方法來執行批次插入操作。此方法可以透過利用優化的特定於資料庫的插入技術來顯著提高效能。
  • 資料庫連線池:如果您預計處理多個並發請求,請考慮實作連線池以減少與開啟相關的開銷並關閉資料庫連線。

透過實作這些最佳化,您可以使用下列指令大幅加快將大量資料插入 MS SQL Server 的過程: pyodbc。

以上是如何使用 pyodbc 優化 MS SQL Server 中的批次插入操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板