2014-10-15 4 views
0

나는 SQL Server 2008을 사용하고 난 다음 질의에이 파일을 읽고 있어요 :이 쿼리는 여기 UUID, 모든 좋은라는 필드 가져OPENROWSET 파일

DECLARE @x xml; 

SET @x = (
SELECT * 
FROM OPENROWSET(BULK N'C:\Attachments\arch.xml', SINGLE_BLOB) AS [Document] 
); 
;WITH XMLNAMESPACES ( 'http://www.sat.gob.mx/TimbreFiscalDigital' as Timbre, 'http://www.sat.gob.mx/cfd/3' as cfdi) 
select 
TimbreUUID = Timbre.value('@UUID', 'varchar(100)') 
FROM @x.nodes('/cfdi:Comprobante/cfdi:Complemento/Timbre:TimbreFiscalDigital') a(timbre) 

,하지만 지금은 필요 대신 그 OPENROWSET (bulk 'string', SINGLE_BLOB) 문자열을 사용 하여이 매개 변수를 사용합니다.

OPENROWSET을 수행하는 방법 매개 변수를 사용 하시겠습니까? 예를 들어

:

declare @param varchar(max)='C:\Attachments\arch.xml' 
SET @x = (
SELECT * 
FROM OPENROWSET(BULK @param, SINGLE_BLOB) AS [Document] 
); 

미안 해요, 네트워크에 대한 몇 가지 제한이 있습니다, 그래서 편집기를 사용할 수 없습니다 제대로

+0

StackOverflow에 오신 것을 환영합니다. 코드, XML 또는 데이터 샘플을 게시하는 경우 ** 텍스트 편집기에서 해당 줄을 강조 표시하고 "코드 샘플"butto를 클릭하십시오. 편집기 툴바에서 n ('{}')을 사용하여 멋지게 형식을 지정하고 구문을 강조 표시합니다! –

+0

예, 코드를 추가하겠습니다. –

답변

0

나는 다음 코드를 사용하여이 문제 해결 :

declare @path nvarchar(max)=('C:\EME870831T20.xml') 
declare @results table (x xml) 
declare @sql nvarchar(max)=N'SELECT CAST(REPLACE(CAST(x AS VARCHAR(MAX)), ''encoding="utf-16"'', ''encoding="utf-8"'') AS XML) FROM OPENROWSET(BULK '''[email protected]+''', SINGLE_BLOB) AS T(x)' 
INSERT INTO @results EXEC (@sql) ;WITH 
XMLNAMESPACES('http://www.sat.gob.mx/cfd/3' as cfdi,'http://www.sat.gob.mx/TimbreFiscalDigital' as tfd) 
SELECT xmldata.value('(@UUID)', 'varchar(100)') AS item_id 
FROM @results CROSS APPLY 
x.nodes('/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital') AS a(xmldata); 
관련 문제