[S/W] [NiFi] NiFi를 활용하여 파일명에서 폴더명 추출하기

김민성·2022년 10월 24일
0

NiFi 작업일지

목록 보기
2/6

[S/W][NiFi] NiFi활용, 파일명에서 폴더명 추출해서 넣기

<배경설명>

- 파일명에 '날짜' 정보가 포함되어 있고, 날짜별(yyyyMMdd) 폴더에 해당 파일을 넣으려 함.

- 파일명 세부형식 : 'abcd'로 시작하며, 확장자는 'png', 마지막 '_'이후 날짜 정보가 포함되어 있음.

* 파일명 예시 : abcd<정보>_<날짜정보(예시.20221024060000)>.png

- NiFi를 활용해서 한번에 특정 디렉터리에서 파일을 수신해서, 한번에 각각 파일명에 있는 날짜를 활용해서 디렉터리로 정리하려 함.

<세부 NiFi Processor>

- GetFile

Input Directory : /IN [의미 : /IN 디렉터리에서 파일을 가져옴]

File Filter : abcd\w.png [의미 : abcd로 시작하고, 확장자가 png인 파일]

* (참고) 확장자 전의 '.'은 특수문자이므로 \ 를 사용해서 escape 처리가 필요함.

- PutFile

Directory : /OUT/${filename:substringAfterLast('_'):substringBeforeLast('.'):substring(0,8)

}

[의미 : filename에서 마지막으로 나오는 '_' 이후의 문자열에서 '.'(확장자) 전의 문자열을 자르고, 해당 문자열의 8글자(연,월,일)를 자른다]

Create Missing Directories : true

[의미 : Directory가 없을 경우, NiFi의 권한으로 신규 디렉터리를 생성함]

<수행결과>

기존 C언어를 통해 Parsing할 때는 filename을 string형태로 읽고 Array와 같은 형태로 수행하였는데, NiFi를 통하니 'substringAfterLast' 등을 사용할 수 있어서 파일 이름 중간에 무엇이 추가되든 마지막에 날짜 정보가 있기만 하면 정상적으로 수행될 수 있어 유연성이 확대되었다.

profile
맛소금토일

0개의 댓글