2017-08-30 36 views
0

我有要求,其中讀取器用於將文件轉換爲一個複合物,我需要採取該對象內的不同的對象,並將其寫入作爲單獨的JSON文件。這意味着對於單行的csv文件,會創建多個jsons文件,並且需要將其寫入Marklogic數據庫。 我已經使用多個項目編寫器將文件轉換爲單個輸出文件,但現在我需要將每行分割爲多行並將其寫入到marklogic數據庫。 任何想法如何將單行分割爲多個文件並寫入Marklogic數據庫。創造出項目讀者的複合物的彈簧批次/啓動轉換CSV到多個JSON和寫入Marklogic數據庫

例如,下面僅僅是一個例子並非實際問題情景:

Person{ 
     HomeAddress homeadd; 
     OfficeAddress officeAdd; 
    } 

CSV單行代表主頁加和辦公地址。我需要輸出寫入Marklogic數據庫的兩個json文件/對象(每種類型的add)。 謝謝

回答

1

如果您使用MLCP將CSV處理爲每行CSV一條記錄,那麼您還可以在輸入上定義一個轉換規則,並劫持該進程以解析/插入其他文檔。

您也可以使用後提交觸發和初始插件後,處理文檔轉換成必需的程序。如果這是高容量的,那麼你可以決定通過Corb2來做到這一點。

你可以預先處理CSV到多個CSV文件適用於immidiate攝取。

考慮所有的選項上面,你可以使用數據移動SDK創作您的解決方案:https://developer.marklogic.com/learn/data-movement-sdk(甚至MLCP/Hadoop的相關庫)

+0

感謝大衛。我爲ItemProcessor和ItemWriter使用ItemReader和自定義實現。我將對象分成多個對象並在作者中創建文件。現在正在研究如何在不將文件寫入磁盤的情況下寫回Marklogic數據庫。 – user1575601

+1

如果您正在從文件中讀取數據,我認爲David首先建議使用MLCP轉換將行分割爲兩個文檔,這是最簡單的方法。當你的數據在一個文件中時,MLCP會很好;我通常會在需要從不同來源檢索數據時引入Spring Batch。 – rjrudin

+0

其實數據已經寫入Marklogic,這是通過處理器來處理數據,並通過使用作家之前進行改造,我試圖避免磁盤僅通過填充而不是文件作爲輸出流,然後將它們插入到寫道: marklogic。 – user1575601