2013-01-21 79 views
0

我已經用java編寫了一個讀取.csv文件並將它們存儲到數據庫表中的程序。但是存儲操作的性能非常緩慢。當我使用DB2 Command Line Processor時,性能發生了巨大變化,速度非常快。所以,我試圖根據我的要求定製DB2 Command Line Processor。我在谷歌搜索,但我只找到如何使用它的主題。在開始之前,我想澄清下列主題。定製DB2命令行處理器

  1. 是 「DB2命令行處理器」 開源?
  2. 使用哪種編程語言?
  3. 是否有其他類似於DB2命令行處理器和java中的開源代碼?
  4. 有沒有辦法從Java程序中調用DB2命令行處理器?
+0

您可能需要澄清的問題:在命令行處理器本身並沒有從文件中讀取數據的能力。你的意思是你使用DB2的'IMPORT'或'LOAD'工具並將它與你自己的應用程序的性能進行比較? –

+0

是的,我正在使用DB2命令行處理器來加載Csv並插入,並且它與我的應用程序沒有任何關係。但是,我的應用程序有時需要讀取csv數據並插入它。因此,性能與我的應用程序有關。 –

+0

請提供您正在使用的確切命令。如果你使用'LOAD'命令,你幾乎肯定不能匹配它的性能。但是如果你使用'IMPORT'命令,@Bruce Martin的建議可能會有所幫助。 –

回答

1

這可能是值得研究的Java程序,緩慢的運行時間可能與你是如何經常commiting的數據(即您可以在運行的自動提交模式(每次插入後commiting))。

每500插入後犯下可以比每個記錄

看到DB2 autocommit有關細節後commiting快得多自動提交

0

1)DB2 CLP(命令行處理器)是DB2的一部分。它不是開源的,它包含在所有版本(Express-C,express,workgroup,extended)和數據服務器客戶端中。這最後是免費下載,並安裝在所有客戶端。

2)使用能力OS DB2CLP的最佳方式是通過腳本,如bash腳本或窗口腳本。 您也可以從另一個程序(如Java應用程序(運行時))調用db2clp。

3)有與開放源代碼許可的數據庫炮彈,但是,你混合兩件事情:一個外殼,即通常你在那裏輸入命令黑屏。還有一個驅動程序可以從您自己開發的程序中查詢數據庫。

4)此外,通過運行,http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html

最後,最好是使用JDBC驅動程序,爲了做事直接,而不是有很多層次的。你必須檢查你的Java代碼,可能讀取效率不高。此外,請檢查DB2 Java驅動程序的屬性。

還有一件事,如果你想fatest,嘗試使用LOAD在數據庫中插入數據。它不執行任何日誌。您還可以從一個Java應用負載(記得在執行任何命令之前加載DB2環境)