[SQL] 어떻게 T-SQL을 사용하여 URL에서 XML을 읽을 수 있습니까?
SQL어떻게 T-SQL을 사용하여 URL에서 XML을 읽을 수 있습니까?
URL에서 XML 파일을 가지고 :
<response>
<sum>0</sum>
<result>0</result>
<comment>sel*1.9488|buy*1.9453</comment>
</response>
지금은에 열을 값으로 URL 및 업데이트에서이 XML 파일을 구문 분석 할 수있는 저장 프로 시저를 원하는 <주석> SEL * 1.9488 | 구매 * 1.9453 주석> 추가 구매 * 1.9453 내 테이블을합니다. 어떻게합니까?
해결법
-
==============================
1.당신이 다음을 수행해야 URL에서 XML을 얻으려면 :
당신이 다음을 수행해야 URL에서 XML을 얻으려면 :
OLE 자동화 절차 사용
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO
그런 다음 URL에서 XML (여기에서 업데이트 된 버전을 기반으로 대답을) 얻을, 다음은 다음 XPath와 문자열을 사용하여 결과를 처리 할 수 있도록 값을 저장하기 위해 임시 테이블을 생성합니다.
이것은 XML, 사용자의 특정 요구 사항에 URL과 XPath를 업데이트해야합니다 매핑하는 구글을 사용하여 작업 예이다.
USE tempdb GO IF OBJECT_ID('tempdb..#xml') IS NOT NULL DROP TABLE #xml CREATE TABLE #xml ( yourXML XML ) GO DECLARE @URL VARCHAR(8000) DECLARE @QS varchar(50) -- & or ? depending if there are other query strings -- Use this for when there is other query strings: SELECT @QS = '&date='+convert(varchar(25),getdate(),126) -- Use this for when there is NO other query strings: -- SELECT @QS = '?date='+convert(varchar(25),getdate(),126) SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-65.598409&sensor=false' + @QS DECLARE @Response varchar(8000) DECLARE @XML xml DECLARE @Obj int DECLARE @Result int DECLARE @HTTPStatus int DECLARE @ErrorMsg varchar(MAX) EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded' EXEC @Result = sp_OAMethod @Obj, send, NULL, '' EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT INSERT #xml ( yourXML ) EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT SELECT yourXML.value('(//GeocodeResponse/status)[1]','VARCHAR(MAX)') from #xml
이 파이프 후 모든 반환하고 테이블에 추가 할 문자열을 삽입하기 위해 당신이 뭔가를 수행해야합니다 :
INSERT tableDestination (valueDestination) SELECT substring(yourXML.value('(//response/comment)[1]','VARCHAR(MAX)'),charindex('|',yourXML.value('(//response/comment)[1]','VARCHAR(MAX)'),1)+1,len(yourXML.value('(//response/comment)','VARCHAR(MAX)'))) from #xml
-
==============================
2.어떻게 같은 약
어떻게 같은 약
DECLARE @xml XML = '<response> <sum>0</sum> <result>0</result> <comment>sel*1.9488|buy*1.9453</comment> </response>' SELECT @xml.value('(//response/comment)[1]','VARCHAR(MAX)')
값에서 () 메서드 (XML 데이터 형식)
from https://stackoverflow.com/questions/18054652/how-can-i-to-read-a-xml-from-a-url-using-t-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 DB 인용 열 이름 (0) | 2020.07.12 |
---|---|
[SQL] 두 개의 서로 다른 결과 집합을 받고 이러한 두 개의 쿼리의 차이는 무엇입니까? (0) | 2020.07.12 |
[SQL] 동적 SQL을 사용하면 간단한 SQL 쿼리에 변수를 추가하여 열 이름을 지정합니다 (0) | 2020.07.12 |
[SQL] 어떻게 SQL 작업이 성공적으로 실행 여부를 C #의 여부를 확인하는 (0) | 2020.07.12 |
[SQL] 사용 LEFT 조인 할 때 어떻게이 스크립트는 테이블을 갱신한다? (0) | 2020.07.12 |