DATOR


유용한 SQL문(XML파일 메타테이블에 저장하기)

이행 프로젝트를 하다보면 TO-BE테이블을 제대로 사용하고 있는지 혹은 SQL을 잘 사용하고 있는지의 확인이 필요하다.

요즘 대부분의 프로젝트에서 SQL의 관리는 XML파일에 관리를 하고 있는 경우가 많이 있다.

XML의 파일의 내용을 테이블에 로드 해서 SQL을 쉽게 찾을수 있다면 편안하게 일을 할수 있을 것이다.

 


1. XML의 파일의 구조가 아래와 같이 되어 있다고 했을경우

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "
http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>설명임</comment>

<entry key="자명파일명.메소드명1">
<![CDATA[
SELECT 컬럼1,컬럼2,컬럼3
  FROM 테이블명
  WHERE 컬럼=:변수바인딩1
]]>
</entry>


<entry key="자명파일명.메소드명2">
<![CDATA[
SELECT 컬럼1,컬럼2,컬럼3
  FROM 테이블명
  WHERE 컬럼=:변수바인딩1
]]>
</entry>


</properties>

 

설명?
 해당 XML의 파일에는 두개의 SQL이 있고 entry의 엘리먼트에 정의되어 있다.
 동일 entry 엘리먼트의 구분자는 key로 유니크한 값으로 정의되어 있다.
 
목적?
 XML의 파일을 아래와 같이 관리를 하면 편안하게 SQL을 검색하여 찾을수 있다.

 

CREATE TABLE HJ_META_SQL(
 INV_ID                        NUMBER         ,
 FILE_NM                       VARCHAR2(4000) ,
 NAME                          VARCHAR2(4000) ,
 SRC_SQL                       CLOB          
)NOLOGGING;
 
작업방법
1.소스 테이블 생성

create table XML_SRC_TBL(ID NUMBER primary key,
                        FILE_NM VARCHAR2(4000),
                        XML_SQL xmltype);


2.XML디렉토리 생성


create or replace directory xmldir as 'C:\xmldata\DATA';

==> 해당 디렉토리의 XML파일을 저장한다.(XML파일 가져와서 해당 디렉토리에 넣으삼.)

 

3.아래를 실행시켜서 XML_SRC_TBL 테이블에 저장한다.

 

alter session set events ='31156 trace name context forever, level 2';

Insert into XML_SRC_TBL values (1,'1.xml',XMLType(bfilename('XMLDIR', '1.xml'),nls_charset_id('AL32UTF8')));
Insert into XML_SRC_TBL values (2,'2.xml',XMLType(bfilename('XMLDIR', '2.xml'),nls_charset_id('AL32UTF8')));

COMMIT;

 

4.XML_SRC_TBL 테이블에 저장후 최종 메타테이블 HJ_META_SQL에 INSERT한다.

 

INSERT INTO HJ_META_SQL
select ID,  
       FILE_NM,
       extract(value(e),'/entry/@key').getstringval() name
       ,TO_CLOB(extract(value(e),'/entry/text()').getclobval()) AS SRC_SQL
  from XML_SRC_TBL x,
    table(xmlsequence(extract(x.XML_SQL,'/properties/entry'))) e;

 

==>조회 해보면 entry 엘리먼테의 key레벨로 SQL을 저장할수 있다.

메타테이블은 이력관리를 활용하여 SQL을 버젼별로도 관리 할수 있을 것이다.

 


5.최종 메타 테이블을 조회 해 본다.

SELECT *
  FROM HJ_META_SQL
 

결론
 1.XML의 파일을 메타테이블에 관리함으로써 향후 영향도 파악 및 개발자들의 SQL을
  올바르게 사용하고 있는지 쉽게 확인 가능하다.
 
도움이 되시기를 바랍니다.

 

Tag

Leave Comments