Sql server 如何将自动XML结果插入表中?
我已使用从表中检索到值Sql server 如何将自动XML结果插入表中?,sql-server,xml,sql-server-2008,insert,Sql Server,Xml,Sql Server 2008,Insert,我已使用从表中检索到值 select * from tableABC for xml auto, elements 现在,在另一台服务器上有一个确切的表tableABC,我需要在其中插入这些检索到的值 如何实现这一点?测试表和数据 create table tableABC(A int, B bit, C varchar(10)) insert into tableABC values(1, 1, 'Row 1') insert into tableABC values(2, 0, 'Ro
select * from tableABC
for xml auto, elements
现在,在另一台服务器上有一个确切的表tableABC,我需要在其中插入这些检索到的值
如何实现这一点?测试表和数据
create table tableABC(A int, B bit, C varchar(10))
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')
获取xml
declare @xml xml
set @xml = (select *
from tableABC
for xml auto, elements)
XML数据
<tableABC>
<A>1</A>
<B>1</B>
<C>Row 1</C>
</tableABC>
<tableABC>
<A>2</A>
<B>0</B>
<C>Row 1</C>
</tableABC>
编辑复制整个语句以测试其是否有效
use tempdb
go
create table tableABC(A int, B bit, C varchar(10))
go
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')
declare @xml xml
set @xml = (select *
from tableABC
for xml auto, elements)
insert into tableABC(A, B, C)
select
r.value('A[1]', 'int'),
r.value('B[1]', 'bit'),
r.value('C[1]', 'varchar(10)')
from @xml.nodes('tableABC') t(r)
select *
from tableABC
go
drop table tableABC
结果是表ABC中的重复行
A B C
----------- ----- ----------
1 1 Row 1
2 0 Row 1
1 1 Row 1
2 0 Row 1
测试表和数据
create table tableABC(A int, B bit, C varchar(10))
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')
获取xml
declare @xml xml
set @xml = (select *
from tableABC
for xml auto, elements)
XML数据
<tableABC>
<A>1</A>
<B>1</B>
<C>Row 1</C>
</tableABC>
<tableABC>
<A>2</A>
<B>0</B>
<C>Row 1</C>
</tableABC>
编辑复制整个语句以测试其是否有效
use tempdb
go
create table tableABC(A int, B bit, C varchar(10))
go
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')
declare @xml xml
set @xml = (select *
from tableABC
for xml auto, elements)
insert into tableABC(A, B, C)
select
r.value('A[1]', 'int'),
r.value('B[1]', 'bit'),
r.value('C[1]', 'varchar(10)')
from @xml.nodes('tableABC') t(r)
select *
from tableABC
go
drop table tableABC
结果是表ABC中的重复行
A B C
----------- ----- ----------
1 1 Row 1
2 0 Row 1
1 1 Row 1
2 0 Row 1
@安多玛请看编辑。。。我放弃了XMLSChema的必要性…所以现在我有了一个不需要插入模式的XML文档。这里有客户机吗?或者这是存储过程中的客户机吗。您是要在目标上调用存储的进程,还是只执行一些sql?@Conrad Frix No Client。任何实现插入的方法..SP都可以。@Andomar请参见编辑。。。我放弃了XMLSChema的必要性…所以现在我有了一个不需要插入模式的XML文档。这里有客户机吗?或者这是存储过程中的客户机吗。您是要在目标上调用存储的进程,还是只执行一些sql?@Conrad Frix No Client。任何实现插入的方法..SP都可以。@GilliVilla-添加了一些东西供您测试。我猜你的代码中有一个输入错误。@GilliVilla-添加了一些东西供你测试。我猜你的代码有错。