Sql server 如何将xml数据插入SQL Server表?
如何将以下XML数据导入到具有三列的SQL Server表中Sql server 如何将xml数据插入SQL Server表?,sql-server,Sql Server,如何将以下XML数据导入到具有三列的SQL Server表中 <dataset> <metadata> <item name="NAME_LAST" type="xs:string" length="62" /> <item name="NAME_FIRST" type="xs:string" length="62" /> <item name="NAME_MIDDLE" type="xs:string" length="
<dataset>
<metadata>
<item name="NAME_LAST" type="xs:string" length="62" />
<item name="NAME_FIRST" type="xs:string" length="62" />
<item name="NAME_MIDDLE" type="xs:string" length="32" />
</metadata>
<data>
<row>
<value>SMITH</value>
<value>MARY</value>
<value>N</value>
</row>
<row>
<value>SMITH2</value>
<value>MARY2</value>
<value>N2</value>
</row>
</data>
</dataset>
史密斯
玛丽
N
史密斯2
玛丽
氮气
试试这个:
DECLARE @input XML = '<dataset>
<metadata>
<item name="NAME_LAST" type="xs:string" length="62" />
<item name="NAME_FIRST" type="xs:string" length="62" />
<item name="NAME_MIDDLE" type="xs:string" length="32" />
</metadata>
<data>
<row>
<value>SMITH</value>
<value>MARY</value>
<value>N</value>
</row>
<row>
<value>SMITH2</value>
<value>MARY2</value>
<value>N2</value>
</row>
</data>
</dataset>'
INSERT INTO dbo.YourTable(ColName, ColFirstName, ColOther)
SELECT
Name = XCol.value('(value)[1]','varchar(25)'),
FirstName = XCol.value('(value)[2]','varchar(25)'),
OtherValue = XCol.value('(value)[3]','varchar(25)')
FROM
@input.nodes('/dataset/data/row') AS XTbl(XCol)
DECLARE@input XML='1〕
史密斯
玛丽
N
史密斯2
玛丽
氮气
'
插入dbo.YourTable(ColName、ColFirstName、ColOther)
挑选
Name=XCol.value('(value)[1]','varchar(25)'),
FirstName=XCol.value('(value)[2]','varchar(25'),
OtherValue=XCol.value('(值)[3]','varchar(25'))
从…起
@input.nodes('/dataset/data/row')作为XTbl(XCol)
将XML数据插入sql Server表
声明@retValue1 varchar(50);
声明@xmlstrxml;
SET@XmlStr=
111589
名称1
Lname1
基础知识
12345
姓名2
Lname2
基础知识
14567
名字3
Lname3
DEF
';
@retValue='Failed';
插入到[测试插入](
[id],
[名字],
[姓氏],
[公司]
)
挑选
合并([Table].[Column].value('ID[1],'int'),0)为'ID',
[Table].[Column].value('FirstName[1],'varchar(50)'作为'FirstName',
[Table].[Column].value('LastName[1]','varchar(50)'作为'LastName',
[表].[列].值('Company[1],'varchar(50)'作为'Company'
从@XmlStr.nodes('/Customers/customer')到[表]([列])
如果(@@ROWCOUNT>0)
设置@retValue='SUCCESS';
这不是答案,请先看看这里:我可能看起来很傻,但先声明变量,然后设置值对我有帮助。
Insert XML Data into sql Server table
Declare @retValue1 varchar(50);
Declare @XmlStr XML;
SET @XmlStr='<Customers>
<customer>
<ID>111589</ID>
<FirstName>name1</FirstName>
<LastName>Lname1</LastName>
<Company>ABC</Company>
</customer>
<customer>
<ID>12345</ID>
<FirstName>name2</FirstName>
<LastName>Lname2</LastName>
<Company>ABC</Company>
</customer>
<customer>
<ID>14567</ID>
<FirstName>name3</FirstName>
<LastName>Lname3</LastName>
<Company>DEF</Company>
</customer>
</Customers>';
@retValue='Failed';
INSERT INTO [test_xmlinsert](
[id],
[firstName],
[lastName],
[company]
)
SELECT
COALESCE([Table].[Column].value('ID[1]', 'int'),0) as 'ID',
[Table].[Column].value('FirstName [1]', 'varchar(50)') as ' FirstName ',
[Table].[Column].value(' LastName[1]', 'varchar(50)') as ' LastName',
[Table].[Column].value(' Company [1]', 'varchar(50)') as ' Company'
FROM @XmlStr.nodes('/ Customers / customer') as [Table]([Column])
IF(@@ROWCOUNT > 0 )
SET @retValue='SUCCESS';