2-1. 애플리케이션 SQL 변환 작업 메뉴 상세 분석
메뉴명
애플리케이션 SQL 변환 작업 : SQLID별 변환 ( 전체, 선택, 샘플 )
목적
MyBatis XML 파일 내의 Oracle SQL을 Target DBMS(PostgreSQL/MySQL) SQL로 변환하는 작업을 수행합니다. 사용자가 전체, 선택적, 또는 샘플 모드를 선택하여 변환 범위를 조정할 수 있습니다.
실행 흐름
initOMA.sh
→ execute_sql_transform()
→ $OMA_BASE_DIR/bin/processSqlTransform.sh
→ $APP_TOOLS_FOLDER/sqlTransformTarget.py
상세 분석
1. execute_sql_transform() 함수
# 위치: initOMA.sh (271행)
# 실행파일: $OMA_BASE_DIR/bin/processSqlTransform.sh
2. processSqlTransform.sh (핵심 실행 스크립트)
# 위치: $OMA_BASE_DIR/bin/processSqlTransform.sh
# 주요 기능: SQL 변환 작업 모드 선택 및 실행
# 실행명령: python3 $APP_TOOLS_FOLDER/sqlTransformTarget.py [옵션]
3. 주요 환경변수 매핑
# 입력 관련 환경변수
APPLICATION_NAME # 프로젝트명
APP_TOOLS_FOLDER # 애플리케이션 도구 폴더 경로
APP_TRANSFORM_FOLDER # 변환 작업 폴더 경로
# 출력 관련 환경변수
APP_TRANSFORM_FOLDER # 변환 결과 저장 폴더
# 기타 설정 환경변수
OMA_BASE_DIR # OMA 기본 디렉토리
4. 작업 단계
4.1 실행 모드 선택
- 선별적 변환 (모드 1): SQLTransformTargetSelective.csv의 항목만 재변환 (사용자 임의 선택 변환)
- 전체 변환 (모드 2): SQLTransformTarget.csv의 모든 미완료 항목 변환 (Sample 변환 대상은 별도 처리하므로 제외)
- 샘플 변환 (모드 3): SampleTransformTarget.csv의 샘플 항목만 변환 (테스트 목적)
4.2 변환 기준
- 그룹 단위 처리: 10개의 SQLID를 1개의 Group으로 묶어서 변환 수행
- 파일 크기 고려: 파일 사이즈가 큰 경우는 소수 그룹으로 묶어서 수행
- 배치 크기 조정: 시스템 성능과 파일 크기에 따라 배치 크기 자동 조정
4.3 SQL 변환 프로세스
- XML 파일에서 SQL 추출 (xmlExtractor.py)
- Oracle SQL을 Target DBMS SQL로 변환 (Amazon Q Chat 활용)
- 변환된 SQL을 XML에 병합 (xmlMerger.py)
- 변환 결과 검증 (xmllint 유효성 검사)
4.4 배치 처리 및 상태 관리
- XML별 고유 배치 ID 생성 (xmlname000001 형식)
- 체크포인트 기능으로 중단된 지점부터 재시작 가능
- 배치별 상태 관리 및 진행 상황 추적
결과 파일
변환 결과 파일
# 출력 경로: $APP_TRANSFORM_FOLDER
1. SQLTransformTarget.csv # 전체 변환 대상 목록
2. SQLTransformTargetSelective.csv # 선별적 변환 대상 목록
3. SampleTransformTarget.csv # 샘플 변환 대상 목록
4. [XML파일명]_tgt.xml # 변환된 MyBatis XML 파일들
5. transform_progress.json # 변환 진행 상황 추적 파일
6. batch_status.txt # 배치 상태 관리 파일
로그 파일
# 출력 경로: $APPLICATION_FOLDER/logs
1. sqlTransform_[timestamp].log # SQL 변환 작업 로그
2. batch_[batchid].log # 배치별 상세 로그
환경 변수 의존성
필수 환경변수
- 프로젝트 설정:
APPLICATION_NAME
,APPLICATION_FOLDER
- 도구 경로:
APP_TOOLS_FOLDER
,APP_TRANSFORM_FOLDER
- 기본 경로:
OMA_BASE_DIR
선택적 환경변수
- 로깅:
LOG_LEVEL
,VERBOSE_MODE
사전 조건
- 애플리케이션 분석 완료 (1-1, 1-2 단계)
- SQLTransformTarget.csv 파일 존재
- MyBatis XML 파일들이 분석되어 있어야 함
- Amazon Q Chat 환경 설정 완료
다음 단계
이 단계의 결과물은 다음 단계들에서 사용됩니다:
- 2-2. Post 변환 작업: 변환된 XML 파일의 후처리
- 2-3. SQL 변환 Merge: 변환된 SQL들의 병합 처리
- 3-1. XML List 생성: Unit Test용 XML 목록 생성
- 3-2. SQL Unit Test: 변환된 SQL의 테스트 수행
주요 특징
- 배치 처리: 대용량 XML 파일을 효율적으로 처리하기 위한 배치 시스템
- 체크포인트: 중단된 지점부터 재시작 가능한 복구 기능
- 모드 선택: 전체/선택적/샘플 변환 모드 지원
- 상태 관리: XML별 고유 배치 ID와 상태 추적
- AI 활용: Amazon Q Chat을 활용한 지능형 SQL 변환
- 검증 기능: xmllint를 통한 변환 결과 유효성 검사
- 그룹 단위 처리: 10개 SQLID 단위로 그룹화하여 효율적 변환
중요 주의사항
⚠️ Sample 변환을 먼저 수행하는 것을 강력히 추천합니다.
- 전체 변환 작업 전에 샘플 변환(모드 3)을 통해 변환 품질과 시스템 성능을 사전 검증
- 변환 규칙과 환경 설정의 정확성을 확인할 수 있음
- 대용량 변환 작업 시 발생할 수 있는 문제를 미리 파악 가능
⚠️ 전체 변환 모드 처리 방식
- 전체 변환(모드 2)에서 SQLTransformTarget.csv는 Sample 변환에 대해서는 별도 처리하는 형태로 간주
- Sample 변환으로 처리된 항목들은 전체 변환 시 제외되어 중복 처리되지 않음