首先是C#处理xml文档

string urlStr = string.Format("http://……?timeBeg={0}&timeEnd={1}", timeBeg, timeEnd);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(urlStr);//加载xml

工作中遇到的xml文档在根元素的第一个节点(state)都会返回此次接口是否返回正常,所以首先要获取xml根元素

XmlElement root = xmlDoc.DocumentElement;//获取xml根元素
int state = Convert.ToInt32(root.FirstChild.InnerText);

判断state值

获取返回xml中需要的XMLNodeList

XmlNodeList xnlchannel= xmlDoc.SelectNodes("root/data/channel");

然后准备datatable,处理datatable中字段的字段名和数据类型

DataTable dt = new DataTable();
dt.Columns.Add("DataDate", typeof(DateTime));
dt.Columns.Add("ProductType", typeof(string));

DataRow dr = null;

由xnlchannel只是返回所有频道,每个人又有自己的信息

foreach (XmlNode node in xnlchannel)
{
string date = node.SelectSingleNode("date").InnerText;
XmlNodeList xnlchanneldata = node.SelectNodes("channeldata");
for (int i = ; i < xnlchanneldata.Count; i++)
{
string producttype = xnlchanneldata[i].SelectSingleNode("chnneltype").InnerText;
XmlNodeList basicnode = xnlchanneldata[i].SelectNodes("detail/nodedata");
foreach (XmlNode nd in basicnode)
{
dr = dt.NewRow();
dr[] = Convert.ToDateTime(date);
dr[] = producttype;
dr[] = nd.SelectSingleNode("nodenme").InnerText;
……
dr[] = DateTime.Now;
dt.Rows.Add(dr);
}
}
}

数据放入datatable之后,就要批量导入了

  public static bool InsertLogUser(DataTable dt)
{
if (dt != null && dt.Rows.Count > )
{
dt.TableName = "Tj_PageCount";//数据库中的表名
SQLHelper DB = new SQLHelper(Config.WebMonitorWrite);
DB.Open();
List<SqlBulkCopyColumnMapping> ColumnMappings = new List<SqlBulkCopyColumnMapping>() {
new SqlBulkCopyColumnMapping("DataDate","DataDate"),
new SqlBulkCopyColumnMapping("ProductType","ProductType"),
……
new SqlBulkCopyColumnMapping("UpdateTime","UpdateTime") }; bool a = DB.SqlBulkCopy(dt, ColumnMappings);
return a;
}
return true;
}
 public bool SqlBulkCopy(DataTable dt, List<SqlBulkCopyColumnMapping> ColumnMappings)
{
SqlBulkCopy sqlbulk = new SqlBulkCopy(this.MyConnStr, SqlBulkCopyOptions.UseInternalTransaction);
try
{
sqlbulk.NotifyAfter = dt.Rows.Count;
sqlbulk.BulkCopyTimeout = ;
//目标数据库表名
sqlbulk.DestinationTableName = dt.TableName;
//数据集字段索引与数据库字段索引映射 foreach (SqlBulkCopyColumnMapping item in ColumnMappings)
{
sqlbulk.ColumnMappings.Add(item);
} //导入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch
{
return false;
}
finally
{
sqlbulk.Close();
dt.Dispose();
this.Close();
}
}

源代码在百度云

读取接口XML和批量导入数据SqlBulkCopy的更多相关文章

  1. C#中大批量导入数据SqlBulkCopy

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  2. csv文件批量导入数据到sqlite。

    csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {})  # bs_switch 为from表单file字段的namedata =[i.split( ...

  3. 意外发现的大批量导入数据SqlBulkCopy类

    因为要做一个号码归属地查询小功能,因为要导入外部(文本文件)的电话归属地数据,使用的是SqlDataAdapter类,数据不多,只四万有多条,表也只有一个,phoneBook表,使用的是DataTab ...

  4. Cassandra使用pycassa批量导入数据

    本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...

  5. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

  6. java使用POI实现Excel批量导入数据

    1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...

  7. 使用python向Redis批量导入数据

    1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self) ...

  8. Redis批量导入数据的方法

    有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...

  9. 批量导入数据到mssql数据库的

    概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...

随机推荐

  1. UIDynamic动画

    UIDynamic是从iOS7开始引入的技术 属于UIkit框架 可以模拟显示生活中的物理现象 如碰撞 抖动 摆动等 一.使用UIDynamic步骤: 1.创建一个动力效果器UIDynamicAnim ...

  2. 阿里云ecs Linux平台安装mongodb数据库

    MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包. 下载地址:http://www.mongodb.org/downloads 下载完安装包,并解压 tgz(以下演示 ...

  3. in addition to 和 except for

    except for 除了...以外(与 except for 连用的整体词与 except for 所跟的词往往不是同类的,是指整体中除去 一个细节.) eg:Your composition is ...

  4. c语言if语句

    #include<stdio.h>#include<windows.h>#include <limits.h>#include <math.h>int ...

  5. Eclipse 安装SVN

    地址:http://wenku.baidu.com/link?url=ntQy2-1CjlNyUpO0-4uhROrc9jCo12Yifh7MkPULmY_dCybl6SEH99SxYxEbZQEiW ...

  6. Android Service 与 IntentService

    Service 中的耗时操作必须 在 Thread中进行: IntentService 则直接在 onHandleIntent()方法中进行

  7. NYOJ题目822画图

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtUAAAHzCAIAAABgzHaKAAAgAElEQVR4nO3dPVLjzBoG0LsJ514IsR

  8. IOS常用正则表达式

    IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...

  9. 在多台服务器上简单实现Redis的数据主从复制(3)(转载)

    转载地址:http://www.cnblogs.com/liping13599168/archive/2011/04/14/2016226.html Redis的主从复制功能非常强大,一个master ...

  10. go 入门之环境搭建-Windows

    网上有很多关于go的环境配置的文章,都没有说出关键点.对于一个新人来说,请使用IDE,而不是sublime text,vim之类的文本编辑器.当然,当你上手之后,可以随便玩. 笔者这里推荐新人使用 L ...