2017-07-10 91 views
0

我正在嘗試使用LOCAL INFILE將數據加載到MySQL數據庫,但是,在將文件成功導入到MySql中後,我無法將文件移動到新的位置。 以下是過程流程的屏幕顯示。將文件移動到Apache NIFI中的另一個位置

Process flow diagram of Nifi FetchFile example

我的問題是: 我設法導入/使用LOAD DATA中MySql LOCAL INFILE裝載數據庫但問題是,當我試圖將成功導入文件移動到正確的目錄。我沒有這樣做。 PutFile_sucess & PutFile_fail無法按預期工作,所以我決定使用:FetchFile,然後當我說FetchFile時,它會創建一個空文件,而不是移動整個文件。

我希望我已經說清楚了,我會很感激任何投入。

+0

沒有錯誤信息?文件權限如何('ls -l')? –

+0

沒有錯誤。 –

+0

沒有錯誤。只是從容易理解.. 正如我所說的XML讀取併成功加載到MySql中.. 我的主要困難是瞭解FlowFile進程.. 如果我使用GetFile來獲取我的文件,然後發送它們對於ExecuteSQL,進程將失敗,因爲GetFile只是將該文件放入內存中,然後LOAD LOCAL INFILE將無法找到該文件,因爲它位於內存中。 –

回答

0

,如果你的問題是消除一次導入的文件,你可以只添加一個FetchFile處理器的sucess部分後的地方,並設置Completion StrategyDelete File

然而,更好的形式給出了將加載文件的內容在Nifi中解析/分割/處理它,然後(最終按批次重新組合)攝取MySQL中的內容。

你可以用你想加載的文件的格式/結構/內容等信息來改善你的問題嗎?

+0

本來我們woud做: 'LOAD DATA LOCAL INFILE '$ {} XML_FILE_PATH' INTO表標題的字符集的二進制 開頭的行會BY '' 結尾BY '' (@title) SET ID = extractValue一起( @title,'id'), text = ExtractValue(@title,'text');' 問題是,當將腳本轉換爲apache-nifi格式時,則: 這樣做:: ' LOAD DATA LOCAL INFILE'$ {filename}' INTO TABLE title' 失敗,原因是Java拋出NO FILE FOUND,這是comin g來自MySQL。我們在使用GetFile,ExecuteSQL時遇到這個錯誤.. –

+0

然而,當我們更改爲ListFile時,ExecuteSQL沒有問題..我的問題是關於Apache-Nifi在使用LOAD DATA LOCAL INFILE和MySQL時處理文件資源。 如果Apache-Nifi已經攝入了內存中的文件,那麼爲什麼當我這樣做:: 'LOAD DATA LOCAL INFILE'$ {filename}' INTO TABLE title' 上面的加載數據本地失敗..當我做:: 'LOAD DATA LOCAL INFILE '$ {absolute.path}/$ {文件名}' INTO TABLE標題' _this運行sucessfully_ 我相信它的東西與我的Apache的Nifi和MySQL%的理解LOAD DATA LOCAL INFILE%功能。 –

+0

反正我一直在使用Apache Nifi,就像2天一樣,我們仍然在努力學習/測試並且更多地瞭解它。 而且我會繼續進一步調查.. –

相關問題