2017-07-10 48 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天一样,我们仍然在努力学习/测试并且更多地了解它。 而且我会继续进一步调查.. –

相关问题