如何将xml数据插入到sql中

时间:2010-11-26 11:35:52

标签: sql xml xmltable

<FILE>
<TITLE> Final Fuel Tax Rates </TITLE>
<QUARTER>1Q2010</QUARTER>
<RECORD>
<JURISDICTION ID="#16">AB</JURISDICTION>
<COUNTRY>CAN</COUNTRY>
<FUEL_TYPE>Gasoline</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>Special Diesel</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>Gasohol</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>Propane</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.2323</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0650</RATE>
<FUEL_TYPE>LNG</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.0000</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0000</RATE>
<FUEL_TYPE>CNG</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.0000</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0000</RATE>
<FUEL_TYPE>Ethanol</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>Methanol</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>E-85</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>M-85</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>A55</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
<FUEL_TYPE>Biodiesel</FUEL_TYPE>
<RATE COUNTRY="US" RATECHANGE="0">0.3217</RATE>
<RATE COUNTRY="CAN" RATECHANGE="0">0.0900</RATE>
</RECORD>
<RECORD>

2 个答案:

答案 0 :(得分:0)

某些SQL DB支持XML类型(您可以在某些单元格上放置一些XML)。 PostgreSQL有这个例子。标准的SQL / XML标准在数据库中有一些关于XML的东西。无论如何,您可能希望将XML存储为大型二进制对象(或将事件存储为大型字符串...)。我不知道那是你问的问题。

如果要对XML进行查询,某些SQL DB可以使用XPath从XML类型中提取信息。否则,您将不得不在数据库中映射数据,这更可能是您想要的,但与XML无关,而是与SQL架构设计有关。

哦,我认为XML设计得不是很好。将每个fuel_type及其速率分组为“燃料”元素更合乎逻辑。

答案 1 :(得分:0)

解决方案

XmlDocument _xmlDoc = new XmlDocument();
_xmlDoc.Load(@"C:\Users\AppData\Local\Temp\ry.xml");

string _xml = _xmlDoc.InnerXml;

FILE _fileObj = (FILE)DeSerialize(_xml, typeof(FILE));

if (_fileObj != null && _fileObj.RECORD != null && _fileObj.RECORD.Count > 0)
{
    foreach (FILERECORD _record in _fileObj.RECORD)
    {
        _record.JURISDICTION[0].Value;
        int i = 0;
        foreach (FILERECORDFUEL_TYPE _fuelType in _record.FUEL_TYPE)
        {   }
    }
}