이번엔 오라클의 XMLTABLE에 대해 배워보도록 하겠습니다!
XMLTABLE에 용도가 많이 있겠지만
저는 XML 파싱에 기능에 대해 포스팅 해보겠습니다.
우선 XML 파싱이란 XML 형식의 문자열에서 데이터를 뽑아내는 것을 말합니다.
XML 표현 형식에는 크게 2가지가 있습니다.
태그 표현 식과 속성 표현식으로 나뉩니다.
우선 태그 표현식을 보면
<-- 태그표현 -->
<Item>
<name>아이템1</name>
<category>카테고리1</category>
<price>3000</price>
</Item>
Item이라는 태그 밑에
name,category,price라는 태그와 함께 값을 가지고 있습니다.
속성 표현을 보겠습니다.
<-- 속성표현 -->
<Item name ='아이템1' category = '카테고리1' price ='3000'></Item>
Item이라는 태그 안에 name, category , price 속성으로 값을 넣는 형식입니다!
이런 XML형식에서 원하는 태그, 속성의 값을 추출하기 위해서 XML 파싱을 합니다!
오라클에서는 XMLTABLE를 사용하는데요
사용법은 간단합니다.
XMLTABLE('추출하고싶은 태그의 상위 태그' PASSING XMLTYPE( XML 형식 데이터 )
COLUMNS 칼럼명 타입 PATH '태그명'
...
) 입니다.
XMLTABLE 이기 때문에 해당 결과를 테이블처럼 다룰 수 있습니다.
이론보다는 예제로 한번 보겠습니다.
예제에서 사용할 XML 문자열은 위에 태그형 문자열을 사용하겠습니다.
우선 테스트를 하기 위한 테이블을 만들어 주고 데이터를 넣어 줍시다!
1
2
3
4
5
|
CREATE TABLE XML_TEST (
XML_DATA VARCHAR2(4000)
)
INSERT INTO XML_TEST VALUES ('<Item><name>아이템1</name><category>카테고리1</category><price>3000</price></Item>');
|
cs |
자 여기서 name , category , price 값을 추출 해보도록 하겠습니다.
XMLTABLE 값을 B라는 임시 테이블로 만들어 해당 테이블 안에 값들을 추출했습니다.
1
2
3
4
5
6
7
8
9
10
|
SELECT
B.name,
B.category,
B.price
FROM XML_TEST A
,XMLTABLE('/Item' PASSING XMLTYPE(A.XML_DATA)
COLUMNS name VARCHAR2(50) PATH 'name',
category VARCHAR2(50) PATH 'category',
price VARCHAR2(50) PATH 'price'
) B;
|
cs |
XMLTABLE 사용이유는 요즘은 다 JSON형태로 되어있지만 XML 형식으로 되있는 API의 데이터를 다룰 때 사용되고
다량의 INSERT를 수행할 때 트랜잭션을 최소화 하기 위해서도 사용됩니다.
( 100건의 INSERT를 한다고 할 때 하나씩 하면 100번의 트랜잭션이 발생하지만 XML 형식으로 하면 1번이면 되기 떄문입니다.)
회사 다니면서 학원에서는 다뤄보지 못한 많은 것을 배우는거 같습니다 ㅎㅎ DB 다루는 기술이 중요하다는걸 다시금 깨닫게 되네요 ㅎㅎ
'Oracle' 카테고리의 다른 글
[Oracle] WITH 문 (0) | 2021.08.21 |
---|---|
[Oracle] MERGE INTO (0) | 2021.08.21 |
[Oracle] REPLACE (0) | 2021.08.17 |
프로시저 (0) | 2021.08.03 |