[S/W] [NiFi] NiFi를 활용한 Parsing 및 DB Insert

김민성·2022년 10월 24일
0

NiFi 작업일지

목록 보기
1/6

[S/W][NiFi] NiFi 활용, Parsing 및 DB Insert

<배경설명>

- TXT파일을 DB(Tibero) 내 특정 테이블에 Insert 해야 함

- [TXT파일 내용] "K1":"K1 내용" 의 형식으로 구성

(예시) K1:202210240707,K2:123,T1:125,~

- 신규 자료처리 프로세스인 NiFi를 활용해서 Parsing 및 DB Insert까지 한번에 하려 함

<세부 NiFi Processor>

- GetFile

* Input Directory : ${now():format('yyyyMMdd')} [의미 : 연/월/일 폴더에서 파일을 가져옴]

* File Filter : \d{12}.txt [의미 : 12자리 숫자인 파일명, 확장자는 txt]

- ExtractText

K1 : "K1":"(.*?)" [의미 : 'K1:(~)' K1: 이후에 오는 문자열을 추출함]

NiFi는 Java기반이므로, 정규식을 활용 가능함
(정규식 해석) '.' : 시작, '*' : '아무거나~', '?' : 끝

- ReplaceText

Replacement Value : INSERT INTO ABCD(TABLE_NAME) (K1,K2) VALUES (TO_DATE('${K1}','YYYY-MM-DD HH24:MI:SS'), ${K2})

[의미 : 'ABCD'라는 TABLE에 'K1'는 날짜 형식으로 넣고, K2는 그대로 하고 INSERT문을 만든다

Replacement Strategy : Always Replace

Evaluation Mode : Entire text

- PutSQL

JDBC Connection Pool : DBCPConnectionPool

- DBCPConnectionPool

Database Connection URL : jdbc:tibero:thin:@<DB_IP>:<DB_PORT>:tibero

Databse Driver Class Name : com.tmax.tibero.jdbc.TbDriver (Tibero 설정값)

Databse Driver Location(s) : <tibero jdbc 파일 위치>

Database User, Password : <DB_USER>, <DB_Password> 각각 입력

<수행결과>

기존 파일을 옮기고, 별도의 C프로세스, Shell Script를 통해 DB Insert를 하고 있었는데 NiFi를 통하니 한번에 해당 과정을 수행할 수 있어서 프로세스 관제 등에서 훨씬 수월함.

기존 C언어를 통한 Parsing보다, 정규식을 통하니 더욱 쉬운 작업이 가능함.

profile
맛소금토일

0개의 댓글