Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将xml数据插入SQL Server表?_Sql Server - Fatal编程技术网

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="

如何将以下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="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';