我有一个xml文件
<Out>
<R>
<S>
<UID>111-20090817192401</UID>
</S>
</R>
</out>
<Out>
<R>
<S>
<UID>222-30090817192401</UID>
</S>
</R>
</Out>
我想将每个节点保存到SQL服务器行中。我怎么能这样做?
SELECT @XMLDATA=BulkColumn
FROM OPENROWSET(BULK 'c:\test.xml', SINGLE_CLOB) AS xmlData
这将两个XML outernodes作为一条记录返回。我怎么能这样做?
预期输出
create table dbo.temp(ID INT IDENTITY PRIMARY KEY, Out varchar(10) null,R varchar(10) null,S varchar(10) null,uid varchar(20) null);
insert into dbo.temp values(null,null,null,111-20090817192401)
insert into dbo.temp values(null,null,null,222-30090817192401)
答案 0 :(得分:1)
阅读完文件内容后,将其转换为xml并使用nodes()
进行查询:
DECLARE @XMLDATA AS xml
SELECT @XMLDATA=CAST(BulkColumn AS xml)
FROM OPENROWSET(BULK 'c:\test.xml', SINGLE_CLOB) AS xmlData
create table dbo.temp(ID INT IDENTITY PRIMARY KEY, Out varchar(10) null,R varchar(10) null,S varchar(10) null,uid varchar(20) null);
INSERT INTO dbo.temp(uid)
SELECT r.value('.', 'varchar(20)')
FROM @XMLDATA.nodes('//UID') x(r)