- Спрете
PutSQLпроцесор и оставете потоковите файлове да се наредят на опашка. - След като са поставени на опашка, щракнете с десния бутон върху
successвръзка
междуUpdateAttributeиPutSQLи изберетеList Queue. - Изберете който и да е поток файл и отидете до
Attributesи вижте дали атрибутитеabsolute.pathиflowfilenameсъществува и ако
съществуват, проверете дали имат зададена очаквана стойност. Във вашия случайabsolute.pathтрябва да има стойност/path/in/nifi/node/to/fileиflowfilenameтрябва да има стойност/data.csv
Въпрос към вас:Вие сами ли задавате тези атрибути с помощта на UpdateAttribute , причината е, че NiFi не генерира атрибут с име flowfilename , той генерира такъв с името filename .
Още нещо, уверете се, че или стойността за absolute.path завършва с / в края или стойността на flowfilename започва с / . Ако не, те ще бъдат добавени и резултатът ще бъде /path/in/nifi/node/to/filedata.csv . Можете да опитате append функция, предложена от @Mahendra, в противен случай можете просто да използвате ${absolute.path}/${flowfilename} .
Актуализация
Току-що разбрах, че absolute.path е основен атрибут като filename , filesize , mime.type и т.н. Някои процесори използват всички основни атрибути, докато някои използват много малко, които са необходими. GenerateTableFetch пише absolute.path но не задава нищо за него. Ето защо има ./ което е стойността по подразбиране.
Така че моето предложение за вашия подход към работата е, че можете ръчно да зададете/пренапишете absolute.path атрибут с помощта на UpdateAttribute (точно както сте презаписали filename ) и задайте желаната стойност, която е /path/in/nifi/node/to/file