2011-11-16 21 views
0

我正在使用Derby In-Memory DB。我需要從一開始就從csv文件加載一些數據。目前,將所有csv文件加載到其表中需要大約25秒的時間。我希望時間可以縮短。由於數據文件實際上並不是很大。使用Derby可以做些什麼來提高批量數據加載的性能?

我所做的是使用德比的內置程序。

{CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (?,?,?,',','"','UTF-8',1)} or 
{CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (?,?,?,',','"','UTF-8',0)} 

唯一特別的是有時一張表中的數據被分割成許多小的csv文件。所以我必須逐個加載它們。而且我已經測試瞭如果我可以將它們組合在一起,它只需要16秒。但是我無法刪除此功能,因爲它是用戶需要的。

有什麼我可以做的,以減少加載數據的時間?我應該禁用日誌還是寫一些用戶定義的函數/過程或者可以完成其他任何調整?任何建議都可以。

謝謝!

回答

1

使用H2代替德比,並使用CSVREAD功能。如果仍然太慢,請參閱fast import優化,或直接使用CSV tool(不使用數據庫)。免責聲明:我爲H2寫了CSV支持。

+0

對,我也在考慮它。 H2非常快。 :) –

+0

有一個問題,H2會負責將Date類型的列導出爲正確的格式?,我記得它只會使用toString()導出,哪一個不太好。 –

+0

我認爲問題是關於導入不導出。對於H2,使用'CREATE TABLE ..(columnList)AS SELECT ... FROM CSVREAD'。這樣,你有正確的數據類型。 –

相關問題