我有不能或不想連接關係數據庫的用戶,但寧願使用導出到excel文件的數據。 從這些數據庫數據導出的記錄集可能變得相當大。 (我也出口到CSV文件)。如何使用openxlsx包中的R編寫100萬行Excel文件
我的問題是關於這個:Handling java.lang.OutOfMemoryError when writing to Excel from R。
正如接受的這個問題的答案(或者更確切的說是第一條評論)中所推薦的那樣,我現在使用基於Rcpp的openxlsx
包來從數據庫中導出一些視圖。 當輸出有〜67000行時,它可以工作,但它的確適用於而不是適用於較大的數據集(〜100萬行,〜20個參數,除幾個日期時間外的所有數字)。
openxlsx::write.xlsx(data, file = "data.2008-2016.xlsx") # 800000 rows
Error: zipping up workbook failed. Please make sure Rtools is installed or a zip application is available to R.
Try installr::install.rtools() on Windows
(我使用Linux的PC,和/ usr/bin中/ ZIP 是提供給R)
我可以給openxlsx包更多的內存?或者設置一些可調選項以更好地處理大數據集?
對於openxlsx,有沒有像基於java的xlsx包的options(java.parameters = "-Xmx1000m")
?
openxlsx vignette沒有提及任何選項。但是也許有一些無證的方法或選項?(例如顯示進度條保存時)
在這一點上我這樣進行:關閉所有不必要的應用程序,重新啓動Rstudio,保持很少/沒有大的物體在全球環境中,查詢分貝左右,然後運行write.xlsx()
。 對於這樣的「乾淨的石板」,它成功地將800000行數據集導出爲93MB-xlsx文件。
Excel中有行限制... https://support.office.com/en-gb/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3 – cory
@cory,感謝您鏈接到規範。我意識到存在侷限性,但我認爲它們更高;特別是我認爲「工作表大小」也受到「可用內存和系統資源的限制」,但這顯然是一種誤解。 (工作表大小限制爲1,048,576行16,384列...) – knb
Excel 2007有65,536行的限制。那些日子很粗糙...... – cory