首先是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. sql 查询最近30分钟或者自定义时间数据

    ) FROM dual; 30分钟或者自定义

  2. 读取Spring的配置文件applicationContext.xml的5种方法

    1.利用ClassPathXmlApplicationContext,这种方式配置文件应该放在类包同路径下Java代码: ApplicationContext ct=new ClassPathXmlA ...

  3. java动态生成excel打包下载

    @SuppressWarnings("unchecked") public String batchExport() throws DBException{ @SuppressWa ...

  4. oracle学习不错的网站

    http://oracle-base.com/articles/linux/rlwrap.php

  5. 384. Shuffle an Array

    Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...

  6. 个推+DCLOUD,推送消息和透传消息

    DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...

  7. Delphi的字符串、PChar和字符数组之间的转换

    参考:http://my.oschina.net/kavensu/blog/193719 以下的各种方法都是我在Delphi 6的环境下测试成功的,可能根据你的开发环境.不同的上下文语境……有一些可能 ...

  8. 【php全局变量和静态变量、静态方法的使用方法】

    php全局变量使用关键字global声明,静态变量使用static声明,静态变量的使用可以使用 类名::变量名 示例代码: <?php //全局变量global 的用法和静态变量的使用 glob ...

  9. 栈与队列:refresh的停车场

    数据结构实验之队列一:排队买饭 Time Limit: 1000MS Memory limit: 65536K 题目描述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是很聪明的,直接 ...

  10. 算法系列:Reservoir Sampling

    copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...