반응형

쿼리에서 사용하는 테이블 발췌

 

프로젝트시 사용하는 테이블을 발췌해야 하는 경우가 있다.

가장 효율적인 방법은 무엇일까?

 

1. SQL Syntax로 파싱하기

2. 패턴으로 파싱하기

3. 테이블 목록으로 파싱하기

 

일반적으로 위의 3가지 방법이 존재할 것 같다.

 

1. SQL Syntax로 파싱하기

 

가장 이상적인 파싱이라 생각한다.

단, 파싱툴(프로그램)이 없는 상태에서 직접 구현하기란 너무 많은 시간이 소모된다.

배 보다 배꼽이 큰 형태가 될 수 있다. 

시간을 가지고 잘 만들어 둔다면, 두고두고 사용할 수 있다.

일전에 만들어 본 바에 의하면, 하루 2~3시간을 투자하여 약 1개월 남짓 걸렸던듯 하다.

생각보다 고려해야 할것들이 많아 복잡하고 어렵다.

맨땅의 헤딩을 해야 할 경우 최악. 소스를 눈으로 까는게 빠를지도...

 

2. 패턴으로 파싱하기

 

테이블명에 특정 패턴이 있다면 사용할 수 있다.

파싱 범위를 좁히고(속도 향상), 패턴에 해당하는 문자열을 찾는 방법이다.

예를들어, "TBL1234M"( 'TBL' + 일련번호(4) + 유형(1) )과 같은 패턴이라면,

"TBL"로 시작하는 8자리 문자열이고, 4~7번째 문자가 숫자인 문자열을 발췌하는 것이다.

 

정확도는 좀 떨어지지만, 많은 소스에서 빠르게 발췌할 때는 유용하다.

이렇게 발췌 후 eye-scan을 통해 정제한다.

 

3. 테이블 목록으로 파싱하기

 

개인적으로 가장 많이 사용하는 방법이다.

오라클의 딕셔너리 정보 등을 이용하여 전체 테이블 목록을 준비한다.

( 프로젝트의 경우, 산출물 자료등을 이용하기도 함. - 담당자에게 요청하여 수령 )

 

테이블명으로 문자열을 검색한다.

소스량이 많아도 생각보다 속도가 굉장히(?) 빠르다.

속도 향상이 필요하다면, 검색 범위를 좁혀 처리하면 된다.

쿼리가 포함된 파일(소스)만 파싱한다던지, FROM절만 파싱한는 등이다.

 

무식하지만, 정확도도 높고 빠르게 처리할 수 있다.

일은 내가 아닌 컴퓨터가 하는거라 힘들지도 않다.

 

 

끝으로...

프로젝트 등에 프로그램 반입 등이 자유롭다면, 1번을 추천한다.

공부 삼아 하나 잘 만들어 두면, 두고두고 유용히 사용할 수 있다.

또한 만드는 과정에서 필요한 기능을 모듈화하면, 여타 작업에서 유용하게 사용할 수 있는 것들이 많았다.

prifix, postfix 문자라던지 한 라인에 n개의 파싱문자가 있을 때 처리하는 재귀함수라던지...

공부도 되고, 여러가지로 좋았던 기억이다.

물론 나는... 보안 등의 이유로 반입이 불가하여, 어느정도 만든 후 마무리하고 중단한 상태이다.

 

반응형