반응형
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)
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] date format 날짜 형식 (CONVERT DATETIME) (0) | 2019.10.25 |
---|---|
[MSSQL] CONCAT 문자열 합치기 (0) | 2019.10.25 |
[MSSQL] JOIN CASE, JOIN OR 조건에 따라 조인테이블 및 조인조건 변경 (0) | 2019.10.02 |
[MSSQL] OUTPUT INSERTED, DELETED 데이터 수정 및 삭제 전 백업 (1) | 2019.10.02 |
[MSSQL] COUNT(*) COUNT(1), COUNT(컬럼명) 행의 개수 (1) | 2019.10.01 |