zoukankan      html  css  js  c++  java
  • C#快速导入海量XML数据至SQL Server数据库

    #region 将Xml中的数据读到Dataset中,然后用SqlBulkCopy类把数据copy到目的表中
    using (XmlTextReader xmlReader = new XmlTextReader(sourcePath))
    {
        DataSet ds = new DataSet();
        ds.ReadXml(XmlReader.Create(sourcePath));//把数据读到DataSet这个过程有点慢,取决于XML文件大小
        using (SqlBulkCopy bcp = new SqlBulkCopy(targetDBCon))
        {
            bcp.BatchSize = ds.Tables[0].Rows.Count;
            bcp.DestinationTableName = targetTableName;
            #region 源表和目的表列匹配,只导入匹配列对应的数据;如果XML中的节点能和目的表中的栏位一一对应,这段程序可不要。
            StringBuilder sbSQL = new StringBuilder();
            sbSQL.AppendFormat("select top 1 * from {0}", targetTableName);
            DbHelperSQL dbHelper = new DbHelperSQL();//自定义数据库操作类
            DataTable dt = dbHelper.GetDataTable(targetDBCon, sbSQL.ToString());
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                {
                    if (dt.Columns[i].ColumnName == ds.Tables[0].Columns[j].ColumnName)
                        bcp.ColumnMappings.Add(ds.Tables[0].Columns[j].ColumnName, dt.Columns[i].ColumnName);
                }
            }
            #endregion
            bcp.WriteToServer(ds.Tables[0]);
        }
    }
    #endregion

  • 相关阅读:
    解决junit @RunWith无法使用的问题
    git .gitignore 有时不起作用的问题
    Docker常用命令 InsaneLoafer
    NOI2021 退役记
    2021“MINIEYE杯”中国大学生算法设计超级联赛 第二场 题解
    2021“MINIEYE杯”中国大学生算法设计超级联赛 第一场 题解
    数位DP
    Windows下Jmeter安装配置
    Linux安装docker-compose
    Ubuntu卸载MySQL
  • 原文地址:https://www.cnblogs.com/tongyinaocan/p/3210404.html
Copyright © 2011-2022 走看看