2017-07-26 117 views
0

我在MySQL中的輸入表有20萬條記錄,Oracle中的目標表爲空。我需要從MySQL將整個表加載到Oracle中。我只是使用表格輸入和表格輸出步驟。Pentaho表輸入批量輸出表

PentahoProcessing

我的目的不是爲了鎖定源表長一段時間,而讀書。 我試圖實現的負載(記錄數)有問題嗎? 我可以在表格輸出中看到Use batch update for inserts選項。我在表格輸入中看不到類似的東西。有沒有辦法在Pentaho中執行批處理?

回答

3

不用擔心,20百萬條記錄對於PDI來說是一個小數字,如果它是開放式輸入的話,您將不會鎖定表格。這就是爲什麼Bulk load用於輸出表格而非輸入表格的原因。

但是,一個常見的開始陷阱是輸出表上的Truncate table選項。如果你運行(不完整或並行處理)兩倍的輸出步驟,每一個都會鎖定另一個。永遠。

要加快速度:您可以對輸入使用Lazy conversion複選框,以便數據保持字節格式,直到它被使用。但我不確定你在簡單的輸入/輸出表上贏得了什麼。如果在輸出文件上寫入日期或Blob時發生錯誤,那麼錯誤信息將非常隱蔽。

您也可以通過提高提交大小(在Oracle中最糟糕的一些嘗試)並增加number of rows in row set來提高輸出的速度,這將增加table input讀取的行數。要做到這一點,右鍵單擊任何地方然後Properties/Miscelanous

我真正建議做的事情是增加JVM內存大小。使用編輯器(記事本或更好)編輯名爲spoon.bat的文件。你會在第94-96行附近找到包含「-Xmx256K」之類的行。將其更改爲「-Xmx4096M」(其中4096是機器RAM的一半大小)。

執行「批處理」有很多含義。其中之一是Make the transformation database transactional。您可以使用上面提到的Number of row in rowset(在PDI最新版本中拼寫爲Make the transformation database)下方的複選框來執行此操作。選中該框後,如果出現問題,數據庫的狀態會回滾,就好像轉換從未執行過一樣。但我不建議你這樣做。