Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
解析xml以在mysql中存储数据_Mysql_Sql_Xml - Fatal编程技术网

解析xml以在mysql中存储数据

解析xml以在mysql中存储数据,mysql,sql,xml,Mysql,Sql,Xml,我需要在mysql数据库中存储xml字符串。我有多张这样的唱片 <Table1><c1><![CDATA[0001]]></c1><c2></c2><c3></c3><c4></c4><c5></c5><c6></c6><c7></c7><c8></c8><c9><

我需要在mysql数据库中存储xml字符串。我有多张这样的唱片

<Table1><c1><![CDATA[0001]]></c1><c2></c2><c3></c3><c4></c4><c5></c5><c6></c6><c7></c7><c8></c8><c9><![CDATA[na80]]></c9><c10><![CDATA[pp61]]></c10><c11><![CDATA[uc131]]></c11><c12><![CDATA]></c12><c13><![CDATA[سکول]]></c13><c14><![CDATA[25-May-13 12:00:00 AM]]></c14><c15><![CDATA[True]]></c15><c16></c16><c17><![CDATA[1]]></c17><c18><![CDATA[1867]]></c18><c19><![CDATA[0]]></c19><c20><![CDATA[1867]]></c20><c21></c21></Table1>

您的问题仍然不清楚

这就是如何在SQL Server中选择值的方法,我不知道MySQL中的语法,但它将是类似的

将数据类型(varchar(max))更改为所需的任何类型

DECLARE @xml XML=
'<Table1><c1><![CDATA[0001]]></c1><c2></c2><c3></c3><c4></c4><c5></c5><c6></c6><c7></c7><c8></c8><c9><![CDATA[na80]]></c9><c10><![CDATA[pp61]]></c10><c11><![CDATA[uc131]]></c11><c12><![CDATA[]]></c12><c13><![CDATA[سکول]]></c13><c14><![CDATA[25-May-13 12:00:00 AM]]></c14><c15><![CDATA[True]]></c15><c16></c16><c17><![CDATA[1]]></c17><c18><![CDATA[1867]]></c18><c19><![CDATA[0]]></c19><c20><![CDATA[1867]]></c20><c21></c21></Table1>';
SELECT x.y.value('c1[1]','varchar(max)') AS c1
      ,x.y.value('c2[1]','varchar(max)') AS c2
      ,x.y.value('c3[1]','varchar(max)') AS c3
      ,x.y.value('c4[1]','varchar(max)') AS c4
      ,x.y.value('c5[1]','varchar(max)') AS c5
      ,x.y.value('c6[1]','varchar(max)') AS c6
      ,x.y.value('c7[1]','varchar(max)') AS c7
      ,x.y.value('c8[1]','varchar(max)') AS c8
      ,x.y.value('c9[1]','varchar(max)') AS c9
      ,x.y.value('c10[1]','varchar(max)') AS c10
      ,x.y.value('c11[1]','varchar(max)') AS c11
      ,x.y.value('c12[1]','varchar(max)') AS c12
      ,x.y.value('c13[1]','varchar(max)') AS c13
      ,x.y.value('c14[1]','varchar(max)') AS c14
      ,x.y.value('c15[1]','varchar(max)') AS c15
      ,x.y.value('c16[1]','varchar(max)') AS c16
      ,x.y.value('c17[1]','varchar(max)') AS c17
      ,x.y.value('c18[1]','varchar(max)') AS c18
      ,x.y.value('c19[1]','varchar(max)') AS c19
      ,x.y.value('c20[1]','varchar(max)') AS c20
      ,x.y.value('c21[1]','varchar(max)') AS c21

FROM @xml.nodes('/Table1') AS x(y);
DECLARE@xml=
'';
选择x.y.value('c1[1]”,'varchar(max')作为c1
,x.y.值('c2[1]”,'varchar(max')作为c2
,x.y.value('c3[1]”,'varchar(max')作为c3
,x.y.值('c4[1]”,'varchar(max')作为c4
,x.y.值('c5[1]”,'varchar(max)'作为c5
,x.y.value('c6[1]”,'varchar(max')作为c6
,x.y.value('c7[1]”,'varchar(max')作为c7
,x.y.value('c8[1]”,'varchar(max')作为c8
,x.y.value('c9[1]”,'varchar(max')作为c9
,x.y.value('c10[1]”,'varchar(max')作为c10
,x.y.value('c11[1]”,'varchar(max')作为c11
,x.y.value('c12[1]”,'varchar(max')作为c12
,x.y.value('c13[1]”,'varchar(max')作为c13
,x.y.value('c14[1]”,'varchar(max')作为c14
,x.y.value('c15[1]”,'varchar(max')作为c15
,x.y.value('c16[1]”,'varchar(max')作为c16
,x.y.value('c17[1]”,'varchar(max')作为c17
,x.y.value('c18[1]”,'varchar(max')作为c18
,x.y.value('c19[1]”,'varchar(max')作为c19
,x.y.value('c20[1]”,'varchar(max')作为c20
,x.y.value('c21[1],'varchar(max)')作为c21
从@xml.nodes('/Table1')中取x(y);

您希望如何处理此xml。请说清楚。您想将每个xml标记值存储在不同的列中吗?不知道MySQL如何处理这个问题,但您的CDATA部分中有一个遗漏了内部[]。。。SQL Server抛出错误…什么是“多条记录”?如果“Table1”是您的根标记,那么也应该有一种行标记吗?是的@kinshuk4我有多个条目,每个条目通过标记相互分隔。我需要将xml中的所有数据插入到服务器端的数据库中。@Shnugo每一行都用标记隔开,并且是列号cdata是包含在该列中的数据确切地说,我这样做的方式与您选择data.value('c1[1],'varchar(4')、data.value('c2[1],'nVARCHAR(max')的方式相同,data.value('c3[1],'nVARCHAR(max)')、data.value('c4[1]、'nVARCHAR(max)')、data.value('c5[1]、'nVARCHAR(max)')、data.value('c6[1]、'nVARCHAR(max)')、data.value('c7[1]、'nVARCHAR(max)')、data.value('c8[1]、'nvarcharchar(max)')、FROM@XML\u SIDetails.nodes(“/Table1”)作为ParamValues(data)现在我需要在mysql中做同样的事情,但mysql的语法我不清楚。@Kamran,我不使用mysql。我在快速研究中发现:。希望这对你有帮助……如果我的答案对你有帮助,请投票赞成,谢谢!