본문 바로가기

프로그래밍/MSSQL

[MSSQL] XML 데이터를 테이블 형태로 저장 (XML to DB)

반응형

 

 

 

 

XML 데이터를 테이블에 입력해보자

 

<root>
	<DATA>
		<num>70</num>
		<id>T9KE211</id>
		<date>2017-04-25 18:16:30</date>
	</DATA>
	<DATA>
		<num>71</num>
		<id>T9U0600</id>
		<date>2017-04-25 18:16:30</date>
	</DATA>
</root>

 

위와 같은 XML 데이터를 테이블형태의 데이터로 만들어보자

 

/* 변수 선언 */
DECLARE @In_Xml VARCHAR(MAX) -- 데이터가 들어있는 XML 스트링
DECLARE @XML_OBJECT XML

SET @In_Xml = N' <root> <DATA> <num>70</num> <id>T9KE211</id> <date>2017-04-25 18:16:30</date> </DATA> <DATA> <num>71</num> <id>T9U0600</id> <date>2017-04-25 18:16:30</date> </DATA> </root> '

/* XML OBJECT로 컨버트 */
SET @XML_OBJECT = CONVERT(XML, @In_Xml)

/* 파싱 */
SELECT x.XmlCol.value('(num/text())[1]', 'INT') AS num
	, x.XmlCol.value('(id/text())[1]', 'VARCHAR(20)') AS id
	, x.XmlCol.value('(date/text())[1]', 'DATETIME') AS date --INSERT 저장할테이블명
FROM @XML_OBJECT.nodes(N'/root/DATA') AS x(XmlCol)

 

 

결과 데이터

 

 

 

 

 

예제. element name이 유동적일때 데이터를 통째로 넣어버리자!

 

DECLARE @In_Xml VARCHAR(MAX);
DECLARE @XML_OBJECT XML;

SET @In_Xml = N' <root> <DATA> <num>1</num> <data><a>abc</a></data> </DATA> <DATA> <num>2</num> <data><b>def</b></data> </DATA> </root> '

/* XML OBJECT로 컨버트 */
SET @XML_OBJECT = CONVERT(XML, @In_Xml)

/* 파싱 */
SELECT x.XmlCol.query(N'/root/DATA/data/node()') AS data --INSERT 저장할테이블명
FROM @XML_OBJECT.nodes(N'/root') AS x(XmlCol)

 

 

결과 데이터

 

 

 

[C#] XML 데이터를 JSON 문자열로 파싱 (xml to json)
[C#] JSON 문자열 XML로 파싱 (json to xml)

 

 

반응형