我是sql server的新手,我试图从XML文档中将行插入数据库。我做了一些研究,并设法使用XML节点函数将XML转换为行集。但是,我不知道接下来该做什么。如何将此行集插入具有相同列名的现有表中?
以下是我到目前为止的情况,任何人都可以帮助我下一步去哪儿吗?
DECLARE @xml xml
SET @xml =
N' <Products>
<Product>
<id>4</id>
<name>Amy</name>
<age>25</age>
</Product>
<Product>
<id>7</id>
<name>Vicky</name>
<age>40</age>
</Product>
</Products>'
SELECT doc.col.value('id[1]', 'nvarchar(10)') id
, doc.col.value('name[1]', 'varchar(100)') name
, doc.col.value('age[1]', 'nvarchar(10)') age
FROM @xml.nodes('/Products/Product') doc(col)
答案 0 :(得分:1)
你可能需要这个
INSERT INTO YourTableName(Id,name,age)
SELECT
doc.col.value('id[1]', 'nvarchar(10)') id
,doc.col.value('name[1]', 'varchar(100)') name
,doc.col.value('age[1]', 'nvarchar(10)') age
FROM @xml.nodes('/Products/Product') doc(col)
答案 1 :(得分:1)
您需要将SELECT
语句的输出传递到您希望填充数据的表的INSERT
语句。
建议:
int
< / strong>假设两个字段都应代表数字。脚本:
CREATE TABLE dbo.mytable
(
id INT NOT NULL
, name VARCHAR(30) NOT NULL
, age INT NULL
)
DECLARE @xml xml
SET @xml =
N' <Products>
<Product>
<id>4</id>
<name>John</name>
<age>25</age>
</Product>
<Product>
<id>7</id>
<name>Jane</name>
<age>40</age>
</Product>
<Product>
<id>6</id>
<name>Jill</name>
<age></age>
</Product>
</Products>'
INSERT INTO dbo.mytable (id, name, age)
SELECT doc.col.value('id[1]', 'int') id
, doc.col.value('name[1]', 'varchar(100)') name
, doc.col.value('age[1]', 'int') age
FROM @xml.nodes('/Products/Product') doc(col);
SELECT * FROM dbo.mytable;
输出:
id name age
-- ------ ---
4 John 25
7 Jane 40
6 Jill 0
答案 2 :(得分:0)
INSERT INTO Table
(
col1
, col2
, col3
)
SELECT
doc.col.value('id[1]', 'nvarchar(10)')
,doc.col.value('name[1]', 'varchar(100)')
,doc.col.value('age[1]', 'nvarchar(10)')
FROM
@xml.nodes('/Products/Product') doc(col)