본문 바로가기
PENTAHO/INFO

[PENTAHO] Linux에서 KETTLE 실행 Shell Script 작성하기 및 exit code 확인하기

by 오늘은강박사갈거야~~ 2021. 9. 16.
반응형

- 이 문서는 PENTAHO의 공식 document를 참고하였습니다.

- 버전은 가장 최신인 9.1 CE 기준으로 작성하였습니다.

- 저도 공부 중입니다.. 틀리거나 이상한 부분이 있으면 댓글 달아주셔요..^^


이 글은 아래와 같은 작업을 위한 것입니다. 

 

-  Linux shell script로 KETTLE을 실행시키는 파일을 만들고, 제대로 수행되는지 검증하는 방법

 

우선 Exit Code에 대하여 알아보자.

 

kettle파일은 실행 완료 후, 6가지의 Exit Code를 리턴합니다. 그것을 보고, 어떠한 결과가 도출되었는지 자세히 알 수 있습니다. 이를 단순 에러의 원인을 찾는 용도로 사용할 수 있지만, shell script에 넣어 자동으로 kettle 파일 실행 결과에 따라 처리를 수행할 수 있게 만들 수 있습니다. 아래는 Exit Code의 결과를 모아 놓은 표입니다. 

 

Exit Code

Exit Code 코드의 내용
0 Success!
1 Errors occurred during processing
2 An unexpected error occurred during loading/running of the Transformation/Job

3 Unable to prepare and initialize the Transformation (only in Pan)
7 The Transformation/Job couldn't be loaded from XML or the repository
8 Error loading steps or plugins (error in loading one of the plugins mostly)
9 Command line usage printing

 

 

이제는 위의 Exit Code로 shell script를 작성해 봅시다. 

 

성공적으로 결과가 도출되었으면, Result ==> Success를 출력합니다. 그렇지 못하고 에러가 나오면, Result ==> Fail로 출력합니다. 

 

이러한 포멧을 활용하여, 다양한 행동을 할 수 있습니다. 예를 들어 KETTLE파일의 결과가 파일이라고 가정했을 때, 

이것이 성공적으로 나오게 되면, 이를 필요한 곳에 이동을 시킬 수 도 있고, 검증하게 할 수도 있습니다. 다양한 방법으로 사용하시면 되겠습니다. 

 

1. KETTLE FILE 실행하는 Script 생성

 

#!/bin/bash

################################################################
# Base Parameter
################################################################

KETTLE_FILE=/root/test/feed.kjb

/root/data-integration/kitchen.sh /file:$KETTLE_FILE

if [ $? -eq 0 ]; then
	
	echo "Result ==> Success" 
else

	echo "Result ==> Fail" 
fi

echo "Task is finished..."

 

2. KETTLE FILE 실행하는 Script 추가 예시

- parameter 설정해서 파일 실행시킨 결과로 나온 JSON파일을 azcopy로 azure blob에 이동시키는 shell script

 

#!/bin/bash

################################################################
# Base Parameter
################################################################
DT=$(date '+%Y/%m/%d %H:%M:%S');
ERR_MESSAGE='[$DT] Error generating'
KETTLE_FILE=/root/test/feed.kjb
DB1_HOST = 로로로로로로
DB1_USER = 리리리리리리

/root/data-integration/kitchen.sh /param:DB1_HOST=$DB1_HOST /param:DB1_USER=$DB1_USER /file:$KETTLE_FILE

if [ $? -eq 0 ]; then
	
	echo "Result ==> Success" 
	azcopy copy '/result/*.json' '경로로로' --content-type 'application/json;charset=utf-8'

else

	echo "Result ==> Fail" 
	curl --data-raw "{'message': $ERR_MESSAGE}" --location --request POST "경로" --header "Content-Type: application/json" 	
fi


echo "Task is finished..."
반응형

댓글