我正在嘗試使用Java將數據從speadsheet導入到數據庫中。有兩種方法可以做到這一點:1)從speardsheets中讀取和提取數據,並將它們組織成數據結構,如ArrayLists,Vectors或不同對象的地圖,以便我可以擺脫冗餘條目等,然後寫入將數據結構導入數據庫。 2)在讀取和提取單元格時,將數據提取並直接放入數據庫。我認爲第一種方式可能會更好,但第二種方式會更快嗎?我應該考慮的任何其他考慮因素?哪種方式更好地導入電子表格數據?
謝謝。
我正在嘗試使用Java將數據從speadsheet導入到數據庫中。有兩種方法可以做到這一點:1)從speardsheets中讀取和提取數據,並將它們組織成數據結構,如ArrayLists,Vectors或不同對象的地圖,以便我可以擺脫冗餘條目等,然後寫入將數據結構導入數據庫。 2)在讀取和提取單元格時,將數據提取並直接放入數據庫。我認爲第一種方式可能會更好,但第二種方式會更快嗎?我應該考慮的任何其他考慮因素?哪種方式更好地導入電子表格數據?
謝謝。
你會希望做一個executeBatch()這裏類似於接近#1。所以基本上你可以從電子表格中讀取批量數據(即1000條記錄)中的數據,然後每次向數據庫提交批處理事務。之後,繼續下一批,等等。通過這種方法,您可以高效地利用數據庫,節省自己的網絡訪問次數,並且最終不會在內存中囤積大量數據,從而導致內存不足異常。您還應該重新使用相同的連接並準備好語句對象。
關於數據清理過程中,你一定要投入持久性存儲,如表之前淨化你的數據。您可能需要生成報告或將來在其他應用程序中使用這些數據,因此從長遠來看,使用結構合理的表格將對您有所幫助。對於批量應用,通常的性能要求不如交易系統高。
你也應該使用一個輔助庫像apache poi讀取Excel文檔。就數據結構而言,它將取決於您的數據,但通常ArrayList在這裏應該足夠了。
您可能會考慮的另一點是,從根本上說,大多數ETL工具提供這些開箱即用的數據加載任務。如果您的情況允許,我強烈建議您使用類似Kettle的ETL工具來加載數據。您可以節省一些時間並學習新的工具。
希望這會有所幫助!
您可以考慮使用ETL工具(提取,轉換和加載)來處理您指定的任務
請接受答案以鼓勵社區的未來答案。你已經提出了6個問題,但沒有接受任何一個答案。您通過點擊答案旁邊的勾號接受答案。 – CoolBeans 2011-12-22 05:58:44