• 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

  • 相关阅读:
    sql中关于存在就不做操作的代码块
    mysql插入多条数据时间复杂度比较
    oracle in VS or效率
    如何实现分布式数据库
    angularJS操作键值对象(类似java的hashmap)填坑小结
    angularJS 如何读写缓冲
    angularJs自定义服务(实现签名和加密)
    ajax请求技术
    springboot中使用mybatis显示执行sql
    mysql快速生成truncate脚本清空数据库表记录
  • 原文地址:https://www.cnblogs.com/tongyinaocan/p/3210404.html
Copyright © 2020-2023  润新知