[SQL] 표 SQL 서버에 XML을 변환
SQL표 SQL 서버에 XML을 변환
나는 내가 XML 데이터를 읽고 TSQL에서 테이블로 변환하는 방법을 궁금해?
예를 들면 :
<row>
<IdInvernadero>8</IdInvernadero>
<IdProducto>3</IdProducto>
<IdCaracteristica1>8</IdCaracteristica1>
<IdCaracteristica2>8</IdCaracteristica2>
<Cantidad>25</Cantidad>
<Folio>4568457</Folio>
</row>
<row>
<IdInvernadero>3</IdInvernadero>
<IdProducto>3</IdProducto>
<IdCaracteristica1>1</IdCaracteristica1>
<IdCaracteristica2>2</IdCaracteristica2>
<Cantidad>72</Cantidad>
<Folio>4568457</Folio>
</row>
에
8 3 8 8 25 4568457
3 3 1 2 72 4568457
해결법
-
==============================
1.이 대답은, 누군가 도움이되기를 바랍니다 :)
이 대답은, 누군가 도움이되기를 바랍니다 :)
먼저 XML을 기록 할 수있는 방법에 두 가지 변화가있다 :
<row> <IdInvernadero>8</IdInvernadero> <IdProducto>3</IdProducto> <IdCaracteristica1>8</IdCaracteristica1> <IdCaracteristica2>8</IdCaracteristica2> <Cantidad>25</Cantidad> <Folio>4568457</Folio> </row> <row> <IdInvernadero>3</IdInvernadero> <IdProducto>3</IdProducto> <IdCaracteristica1>1</IdCaracteristica1> <IdCaracteristica2>2</IdCaracteristica2> <Cantidad>72</Cantidad> <Folio>4568457</Folio> </row>
대답:
SELECT Tbl.Col.value('IdInvernadero[1]', 'smallint'), Tbl.Col.value('IdProducto[1]', 'smallint'), Tbl.Col.value('IdCaracteristica1[1]', 'smallint'), Tbl.Col.value('IdCaracteristica2[1]', 'smallint'), Tbl.Col.value('Cantidad[1]', 'int'), Tbl.Col.value('Folio[1]', 'varchar(7)') FROM @xml.nodes('//row') Tbl(Col)
<row IdInvernadero="8" IdProducto="3" IdCaracteristica1="8" IdCaracteristica2="8" Cantidad ="25" Folio="4568457" /> <row IdInvernadero="3" IdProducto="3" IdCaracteristica1="1" IdCaracteristica2="2" Cantidad ="72" Folio="4568457" />
대답:
SELECT Tbl.Col.value('@IdInvernadero', 'smallint'), Tbl.Col.value('@IdProducto', 'smallint'), Tbl.Col.value('@IdCaracteristica1', 'smallint'), Tbl.Col.value('@IdCaracteristica2', 'smallint'), Tbl.Col.value('@Cantidad', 'int'), Tbl.Col.value('@Folio', 'varchar(7)') FROM @xml.nodes('//row') Tbl(Col)
에서 발췌 :
-
==============================
2.를 sp_xml_preparedocument 저장 프로 시저가 XML을 구문 분석되고 OPENXML 행 집합 공급자가 당신에게 XML 데이터의 관계형 뷰를 표시합니다.
를 sp_xml_preparedocument 저장 프로 시저가 XML을 구문 분석되고 OPENXML 행 집합 공급자가 당신에게 XML 데이터의 관계형 뷰를 표시합니다.
자세한 내용과 더 많은 예제를 들어 OPENXML 설명서를 참조하십시오.
귀하의 질문에 관해서는,
DECLARE @XML XML SET @XML = '<rows><row> <IdInvernadero>8</IdInvernadero> <IdProducto>3</IdProducto> <IdCaracteristica1>8</IdCaracteristica1> <IdCaracteristica2>8</IdCaracteristica2> <Cantidad>25</Cantidad> <Folio>4568457</Folio> </row> <row> <IdInvernadero>3</IdInvernadero> <IdProducto>3</IdProducto> <IdCaracteristica1>1</IdCaracteristica1> <IdCaracteristica2>2</IdCaracteristica2> <Cantidad>72</Cantidad> <Folio>4568457</Folio> </row></rows>' DECLARE @handle INT DECLARE @PrepareXmlStatus INT EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML SELECT * FROM OPENXML(@handle, '/rows/row', 2) WITH ( IdInvernadero INT, IdProducto INT, IdCaracteristica1 INT, IdCaracteristica2 INT, Cantidad INT, Folio INT ) EXEC sp_xml_removedocument @handle
from https://stackoverflow.com/questions/3989395/convert-xml-to-table-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL은 : 행을 선택하는 열 값은 이전 행 변경된 곳 (0) | 2020.04.06 |
---|---|
[SQL] 열 함유 쉼표의 값이 값을 구분 어디에 (0) | 2020.04.06 |
[SQL] 테이블의 한 필드를 기준으로 Linq에있는 고유 (0) | 2020.04.06 |
[SQL] 큰 성능 차이에 의해 구별 VS기를 사용할 때 (0) | 2020.04.06 |
[SQL] SQL 서버 2008 : 어떻게 사용자 이름에 권한을 부여합니까? (0) | 2020.04.06 |