2014-02-14 90 views
1

我目前正試圖使用​​python庫pyodbc加載一千萬行數據。看看下面的例子中,客戶表有超過一百萬行,請注意jeetl:無法使用python從數據庫中選擇1000萬行

results = jeetl.dw_command_cursor("select * from Customer") 

的,如果我把它限制爲僅一百萬行,但放平在其表面有十個以上的正常工作,有沒有解決這個問題的方法? 以下是錯誤消息我已經看到:

pyodbc.Error: ('08S01', '[08S01] Communication error while getting a tuple;\nCommunication error while getting a tuple (26) (SQLExecDirectW)') 

在此先感謝

+2

是否有可能你正在運行的內存? – IanAuld

+5

這似乎是一個非常糟糕的主意。嘗試以較小的塊處理您的數據。 –

+0

表示同意,是否有一種方法可以檢索到第一百萬個處理它,然後通過SQL轉移到下一個百萬呢? – godzilla

回答

1

也許你的查詢結果是太大,嘗試檢查max_allowed_pa​​cket_size。 例如在MySQL:https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html

也許你需要做的是分頁的結果是什麼: http://www.petefreitag.com/item/451.cfm

+0

感謝您的迴應,有沒有一種方法可以檢索前100萬個處理它,然後通過SQL轉移到下一個百萬? – godzilla

+0

是的。在我發佈的鏈接中,它顯示瞭如何選擇「限制」和「偏移」。你可以在「while」中做到這一點,然後相應地更改SQL查詢以獲得「第一百萬」,「第二百萬」等等,直到你得到所有需要的結果。阿爾戈也許你需要通過主鍵「排序」結果,不要錯過任何。 – ctutte