2016-06-10 77 views
1

我試圖將XML文件放入SQL表中。我使用下面的代碼成功地得到了XML文件到SQL服務器:將XML表插入SQL表

declare @xmldata as xml 

set @xmldata = (SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn 
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X) 

和下面的代碼片段是我得到一個錯誤。我知道我必須使用INSERT INTO語句,但我不確定我在哪裏出錯。

INSERT INTO t1(c1, c2, c3) 
SELECT 
c1 AS 'c1', 
c2 AS 'c2', 
c3 as 'c3' 

我目前使用SQL Server 2005的

的XML文件看起來像這樣

<row> 
<c1> DATA </c1> 
<c2> DATA </c2> 
<c3> DATA </c3> 
</row> 
... 
+2

秀你的錯誤。你的兩個查詢之間的依賴性在哪裏? – xdd

+0

無效的對象名稱「BenCalCopy1」。 –

+0

我的帖子中沒有看到「BenCalCopy1」。如果我們要幫助你,你需要告訴我們你在做什麼。 – AakashM

回答

0

與您最後的評論你沒有(與@Shnugo如)直接針對任何用戶,所以沒有警覺。沒有人發現你的編輯顯然...

不知道這仍是一個懸而未決的問題,但這是一個答案:

這是你加載的文件的方式

declare @xmldata as xml; 
set @xmldata = 
(
    SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn 
    FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X 
); 

現在變量@xmldata應該包含XML,就像您在編輯中發佈的一樣。只是爲了測試我設置的變量一些配件內容:

SET @xmldata= 
'<root> 
    <row> 
     <c1>DATA1</c1> 
     <c2>DATA2</c2> 
     <c3>DATA3</c3> 
    </row> 
    <row> 
     <c1>DATA4</c1> 
     <c2>DATA5</c2> 
     <c3>DATA6</c3> 
    </row> 
</root>'; 

現在我創建一個臨時表來測試插入

CREATE TABLE #t1(c1 VARCHAR(100),c2 VARCHAR(100),c3 VARCHAR(100)); 

這是插入數據的方式:

INSERT INTO #t1 
SELECT One.Rw.value('c1[1]','varchar(100)') 
     ,One.Rw.value('c2[1]','varchar(100)') 
     ,One.Rw.value('c3[1]','varchar(100)') 
FROM @xmldata.nodes('/root/row') AS One(Rw); 

SELECT * FROM #t1; 

GO 
DROP TABLE #t1; 

這是結果:

c1  c2  c3 
DATA1 DATA2 DATA3 
DATA4 DATA5 DATA6