我试图将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>
...
答案 0 :(得分: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