关于SqlBulkCopy SQL批量导入需要注意,列名是区分大小写的
最近在做数据从Excel批量导入MSSQL时,传统的是使用Insert Into Table方法,不过这个方便比较慢
通过使用 SqlBulkCopy 可以批量导入到数据库。
默认批量导入数据库,需要DataTable的构架和MSSQL的表结构一样。但是使用ColumnMappings可以对列明进行映射。
例如
List<string[]> list = new List<string[]>();
list.Add(new string[] { "staffid", "员工ID" });
list.Add(new string[] { "StaffCode", "员工号" });
list.Add(new string[] { "displayname", "中文姓名" });
list.Add(new string[] { "username", "登录名" });
using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(ConStr, SqlBulkCopyOptions.KeepIdentity))//引用SqlBulkCopy
{
sqlRevdBulkCopy.DestinationTableName = strTableName;//数据库中对应的表名
for (int i = 0; i < list.Count; i++)
{
sqlRevdBulkCopy.ColumnMappings.Add(list[i][1], list[i][0]);
}
sqlRevdBulkCopy.WriteToServer(dtData);//数据导入数据库
sqlRevdBulkCopy.Close();//关闭连接
}
其中有两点需要注意:
(1)SqlBulkCopyOptions.KeepIdentity 这个参数允许自增型主键导入
(2)表的列名是区分大小写的。这点非常重要。笔者就是花了2-3个小时解决这个问题。
因此程序运行,总是提示列名不匹配,后来仔细查看数据库一列是qq,但是在映射里写成了QQ。传统的我们认为MSSQL的SQL是不区分大小写的(SQL_PRC_CI_AS排序)
但是,没想到批量导入竟然列名区分大小写。
关于SqlBulkCopy SQL批量导入需要注意,列名是区分大小写的的更多相关文章
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
		将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ... 
- C# SqlBulkCopy类批量导入数据
		特别注意 sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); 插入的时候列的顺序可 ... 
- C# SqlBulkCopy类批量导入 测试
		一.功能说明 1.可以选择,只导入部分列,或者导入全部列. 2.导入速度的确比一般sql要快. 3.不用写sql语句 ----------------------------------------- ... 
- Java使用JDBC连接数据库逐条插入数据、批量插入数据、以及通过SQL语句批量导入数据的效率对比
		测试用的示例java代码: package com.zifeiy.test.normal; import java.io.File; import java.io.FileOutputStream; ... 
- 使用mysql的source批量导入多个sql文件
		需求: 有一个文件,文件里面包含100多个sql文件,想要把这些sql文件都导入到mysql中 做法: 使用 mysql 的 source 可以将文件导入到 mysql 中,但是一次只能导入一个 sq ... 
- 【ITOO 1】SQLBulkCopy实现不同数据库服务器之间的批量导入
		导读:在做项目的时候,当实现了动态建库后,需要实现从本地服务器上获取数据,批量导入到新建库的服务器中的一个表中去.之前是用了一个SQL脚本文件实现,但那时候没能实现不同的数据库服务器,现在用了SqlB ... 
- 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)
		原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/11/11/1331060.html 如果你需要在程序中批量插入成千上万行的数据,你会怎么编写 ... 
- 读取接口XML和批量导入数据SqlBulkCopy
		首先是C#处理xml文档 string urlStr = string.Format("http://……?timeBeg={0}&timeEnd={1}", timeBe ... 
- 从TXT文本文档向Sql Server中批量导入数据
		下面我们通过以下的简单的SQL语句即可实现数据的批量导入,代码如下: Bulk insert id From 'G:\文档\test.txt' With ( fieldterminator=',', ... 
随机推荐
- 探究  encode  和  decode  的使用问题(Python)
			很多时候在写Python程序的时候都要在头部添加这样一行代码 #coding: utf-8 或者是这样 # -*- coding:utf-8 -*- 等等 这行代码的意思就是设定同一编码格式为utf- ... 
- ubuntu下设置jupyter notebook 2017年07月29日 19:28:34 小旋锋 阅读数:8329 标签: ubuntu 更多  个人分类: python 二三事  来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython Notebook现在已经改名为Ipython jupyter,是最知名最好用的
			ubuntu下设置jupyter notebook 来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython No ... 
- 什么是新生代 GC 和老年代 GC
			GC 经常发生的区域是堆区,堆区还可以细分为新生代.老年代 jvm堆示意图 新生代 一个 Eden 区 两个 Survivor 区 老年代 默认 新生代(Young)与老年代(Old)的比例的值为 1 ... 
- [转]Splay算法
			首先声明,本教程的对象是完全没有接触过splay的OIer,大牛请右上角. 先看一道题目: skydec有n个数,每次他都会把一些数放进一些盒子里,由于skydec太傻×,所以他不能判断数的大小,现在 ... 
- bugku web题INSERT INTO注入
			0x01: 打开题目描述,已经将源码给了我们: <?php error_reporting(0); function getIp(){ $ip = ''; if(isset($_SERVER[' ... 
- python  django +  js 使用ajax进行文件上传并获取上传进度案例
			<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- python的异常处理及异常类定义
			python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ... 
- 【BZOJ5137】Standing Out from the Herd(后缀自动机)
			[BZOJ5137]Standing Out from the Herd(后缀自动机) 题面 BZOJ 洛谷 题解 构建广义后缀自动机 然后对于每个节点处理一下它的集合就好了 不知道为什么,我如果按照 ... 
- hiho1269 优化延迟 ([Offer收割]编程练习赛1)
			一道中文题,就不用翻译了. 大意是讲,一串数字,可以按照输入的先后顺序扔到一个固定大小的缓冲池子里,这个池子里的数输出顺序随意.然后计算—— SP=1*Pi1+2*Pi2+3*Pi3+...+N*Pi ... 
- zoj 3659 第37届ACM/ICPC 长春赛区现场赛E题 (并查集)
			题意:给出一棵树,找出一个点,求出所有点到这个点的权值和最大,权值为路径上所有边权的最小值. 用神奇的并查集,把路按照权值从大到小排序,然后用类似Kruskal的方法不断的加入边. 对于要加入的一条路 ... 
