2013-09-23 28 views
1

IM具有这种XML的XML文件中的数据:进口与脚本为sql

<?xml version="1.0"?> 
-<recordedData> 
    <machine>ZSK40-2</machine> 
    <date>2013/09/21</date> 
    <hour>05:32</hour>-<CollectedData>-<variable> 
      <Name>PRODUCT</Name> 
      <Value>FILLER 580</Value> 
     </variable>-<variable> 
      <Name>LOT_NUMBER</Name> 
      <Value>CG 00063 0</Value> 
     </variable>-<variable> 
      <Name>SHIFT_SUPERVISOR</Name> 
      <Value> covaliu l</Value> 
     </variable>-<variable> 
      <Name>KGH_ALL_SET</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>KGH_ALL_REAL</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>KGH_F1_SET</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>KGH_F1_REAL</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>K_F1</Name> 
      <Value>43</Value> 
     </variable>-<variable> 
      <Name>SCREW_RPM_SET</Name> 
      <Value>550</Value> 
     </variable>-<variable> 
      <Name>SCREW_RPM_REAL</Name> 
      <Value>550.085388183594</Value> 
     </variable>-<variable> 
      <Name>TORQUE</Name> 
      <Value>1.21340000629425</Value> 
     </variable>-<variable> 
      <Name>CURRENT</Name> 
      <Value>60.1959991455078</Value> 
     </variable>-<variable> 
      <Name>KW_KG</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>KW</Name> 
      <Value>-0.990000009536743</Value> 
     </variable>-<variable> 
      <Name>MELT_PRESSURE</Name> 
      <Value>0</Value> 
     </variable>-<variable> 
      <Name>MELT_TEMPERATURE</Name> 
      <Value>214</Value> 
     </variable>-<variable> 
      <Name>PV1</Name> 
      <Value>216</Value> 
     </variable>-<variable> 
      <Name>SP1</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV2</Name> 
      <Value>239</Value> 
     </variable>-<variable> 
      <Name>SP2</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>PV3</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>SP3</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>PV4</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>SP4</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>PV5</Name> 
      <Value>209</Value> 
     </variable>-<variable> 
      <Name>SP5</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV6</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>SP6</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV7</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>SP7</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV8</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>SP8</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV9</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>SP9</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV10</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>SP10</Name> 
      <Value>210</Value> 
     </variable>-<variable> 
      <Name>PV11</Name> 
      <Value>220</Value> 
     </variable>-<variable> 
      <Name>SP11</Name> 
      <Value>220</Value> 
     </variable> 
    </CollectedData> 
</recordedData> 

任何人都可以从它,请抽取所有数据提供了一个样本SQL脚本。

我真的很喜欢这个,因为我是新到XML。

在此先感谢。

+0

如果有更简单的方法来粘贴xml数据请告诉我。 – user2725348

+0

microsoft sql(2005) – user2725348

回答

1

如果你有你的数据在一个表已,你可以使用这样的事情:

DECLARE @Tmp TABLE (ID INT NOT NULL, XmlContent XML) 

INSERT INTO @TMP VALUES(1, '......(your entire XML here).......) 

SELECT 
    ID, 
    MACHINE = XmlContent.value('(/recordedData/machine)[1]', 'varchar(50)'), 
    RecordingDate = XmlContent.value('(/recordedData/date)[1]', 'varchar(50)'), 
    RecordingTime = XmlContent.value('(/recordedData/hour)[1]', 'varchar(50)'), 
    VariableName = XVar.value('(Name)[1]', 'varchar(50)'), 
    VariableValue = XVar.value('(Value)[1]', 'varchar(50)') 
FROM 
    @Tmp 
CROSS APPLY 
    XmlContent.nodes('/recordedData/CollectedData/variable') AS XTbl(XVar) 

这给你的输出是这样的:

enter image description here

....和依此类推 - 列出所有变量及其名称和值。

+0

还有一种将列交换为行并将行交换为列的方法?我的意思是列名应该是VariableName,而VariableValue应该是表的值。第一个记录是日期/时间(从RecordingDate和RecordingTime合并而来)? – user2725348

+1

无论如何,你做了什么是有意思的,谢谢你的一百万!应该让我对如何对待xml有很好的理解。 – user2725348