问题描述:
现有大量数据需要生成xml文件,如何做才能达到速度最快。
同时对于生成的这个xml文件如何做才能往dataSet写入速度最快。
简单的读写我现在也会,关键我现在需要的是如果往xml写还是读到dataSet我希望效率一定要最快
因为数据量实在太多。要求有源代码。
谢谢大家了。急~~

解决方案 »

  1.   

    建议先读Xml的框架,在去读取数据
      

  2.   

    读取前先用ReadXmlSchema方法获取结构试试看
      

  3.   

    string XMLText=null;保存了XML的文本
    DataSetMyDs = New DataSet();
    DataTable MyTab;'加载架构
    MyDs.ReadXmlSchema(New IO.StringReader(XMLText))
    Foreach( MyTab In MyDs.Tables)
    {
    MyTab.BeginLoadData()
    Next
    }然后再让DataSet加载数据。
    注意:因为前面我们一个帮他加载架构信息了,这里就可以让DataSet加载数据时忽略Schema。
    '加载数据
    MyDs.ReadXml(New IO.StringReader(XMLText), XmlReadMode.IgnoreSchema)
    Foreach (MyTab In MyDs.Tables)
    {
    MyTab.EndLoadData()
    }Ok,这样就把数据快速的加载到DataSet了。经过实际测试,数据量越大效率比就越高
      

  4.   

    现有大量数据需要生成xml文件,如何做才能达到速度最快。 
    --------------
    使用BCP
    同时对于生成的这个xml文件如何做才能往dataSet写入速度最快。 
    ---------------
    若数据量大使用XmlReader读取,不要Load
      

  5.   

    我用3楼的方法试了,不行呀,我的代码如下,哪里出错了,怎么改才行?
    DataSet dataSetTo = new DataSet();
    dataSet.WriteXml("temp.xml",XmlWriteMode.IgnoreSchema);
    dataSetTo.ReadXmlSchema(new System.IO.StringReader("temp.xml")); 
    foreach(DataTable MyTab in dataSetTo.Tables) 

    MyTab.BeginLoadData();

    dataSetTo.ReadXml(new System.IO.StringReader("temp.xml"), XmlReadMode.IgnoreSchema);
    foreach (DataTable MyTab in dataSetTo.Tables) 

    MyTab.EndLoadData();
      

  6.   

    dataSet.WriteXml("temp.xml",XmlWriteMode.IgnoreSchema); 这个去掉
      

  7.   

    刚才我试了一下效果并不理想,4MB的xml居然读了2分钟以上,这样的速度太慢了。
    没有别的方法再改善了吗??
      

  8.   

    数据最大了最好使用XmlWriter或XmlReader来操作。因为这样不会因为太占内存而影响速度。
      

  9.   

            #region 转换XML为DATASET
            /// <summary>
            /// 转换XML为DATASET
            /// </summary>
            /// <param name="xmlData"></param>
            /// <returns></returns>
            private DataSet ConvertXMLToDataSet(string xmlData)
            {
                StringReader stream = null;
                XmlTextReader reader = null;
                try
                {
                    DataSet xmlDS = new DataSet();
                    stream = new StringReader(xmlData);
                    reader = new XmlTextReader(stream);
                    xmlDS.ReadXml(reader);
                    return xmlDS;
                }
                catch (Exception ex)
                {
                    string strTest = ex.Message;
                    return null;
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                }
            }
            #endregion