首頁 >資料庫 >mysql教程 >如何在不耗盡記憶體的情況下將大型 SQL 查詢讀取到 Pandas DataFrame 中?

如何在不耗盡記憶體的情況下將大型 SQL 查詢讀取到 Pandas DataFrame 中?

Susan Sarandon
Susan Sarandon原創
2025-01-13 09:14:44885瀏覽

How Can I Read Large SQL Queries into Pandas DataFrames Without Running Out of Memory?

將大型 SQL 查詢匯入 Pandas DataFrame 時避免記憶體錯誤

在檢索大型資料集時,使用大型 SQL 資料庫通常會帶來挑戰。 嘗試將超過一百萬行的整個表直接載入到 Pandas DataFrame 中很容易導致記憶體錯誤。 下面的程式碼說明了這個問題:

<code class="language-python">import pandas.io.sql as psql
sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)</code>

此方法很容易失敗,如果產生的 DataFrame 超出可用 RAM,則會導致「MemoryError」。

Pandas 從 0.15 版本開始,提供了一個強大的解決方案:chunksize 參數。這允許您以更小的、可管理的部分讀取和處理 SQL 查詢。

以下是實施此解決方案的方法:

<code class="language-python">sql = "SELECT * FROM My_Table"
for chunk in pd.read_sql_query(sql , engine, chunksize=5):
    print(chunk)</code>

透過指定chunksize,Pandas 會增量檢索資料。 每個區塊都單獨處理,防止記憶體過載。上面的範例列印每個區塊; 您可以根據需要調整它以對每個區塊執行其他操作。

該技術提供了一種實用且節省記憶體的方法來處理大型 SQL 查詢,即使對於大量資料集也能確保資料處理順利。

以上是如何在不耗盡記憶體的情況下將大型 SQL 查詢讀取到 Pandas DataFrame 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn