我做一個ETL過程與Pentaho的(勺/壺),我想讀取XML文件,並存儲元素值分貝。讀取XML的文件使用StAX /水壺(Pentaho的)
這只是正常與「離XML數據」 -component ......但XML文件是相當大的,幾個千兆字節,並且有前讀取文件的時間太長。
Pentaho的維基說:
的從XML步現有的獲取數據更容易使用,但使用DOM 解析器需要在內存中處理和零件甚至清除文件的 是不足夠的,當這些零件非常大。
XML輸入流(StAX的)步驟使用完全不同的方法 解決用例非常大的,複雜的數據和鋼結構的 需要非常快速的數據加載...
有我脫穎而出現在正在試圖對StAX做同樣的事情,但它似乎並不像計劃中那樣工作。我正在用只有一個元素組的XML文件來測試它。該文件被讀取,然後映射/插入到表...但現在我得到多行到表的所有值是「未定義」和一些行,我有正確的值。總的來說,我在表格中有92行,儘管它應該只有一行。
流程是這樣:
1)使用StAX
2)修改Java腳本值讀取
3)輸出到DB
在步驟2)我做如下:
VAR ID;
如果(xml_data_type_description.equals( 「字符」)& & xml_path.equals( 「/標籤/標籤/ ID」)){ ID = xml_data_value; } ...
我使用positional-staz.zip從http://forums.pentaho.com/showthread.php?83480-XPath-in-Get-data-from-XML-tool&p=261230#post261230作爲一個例子。
如何使用StAX讀取XML文件並將元素值存儲到數據庫?
我一直在尋找例子,但沒有發現太多。上面的示例在插入行之前使用「Filter Rows」組件。我不太明白爲什麼它被使用,我不能只映射我需要的值嗎?這可能是因爲我沒有使用或知道如何使用Filter Rows -component而出現此問題。
乾杯!