关于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排序)

但是,没想到批量导入竟然列名区分大小写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题

VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题问题&#xff1a;VMware设置网络模式为NAT模式后&#xff0c;我们使用主机ping虚拟机无法联通&#xff0c;用虚拟机ping主机可以联通。 原因&#xff1a;这是由于虚拟机的IP网段与主机的VMnet8网段不一致所造成的。 解…

linux下 mysql 忘记root用户密码解决办法

一、以系统的root用户&#xff08;什么&#xff0c;你的系统的root用户密码也忘了。那只好看我另外一篇linux下忘记root用户的解决办法了先解决这个问题&#xff09;登陆系统&#xff0c;进入终端 [rootlocalhost /]# 二、杀掉mysql进程 方法1、[rootlocalhost /]#killall m…

OO设计原则总结

什么是设计原则&#xff1f; 设计原则是基本的工具&#xff0c;应用这些规则可以使你的代码更加灵活、更容易维护&#xff0c;更容易扩展。 基本原则封装变化Encapsulate what varies. 面向接口编程而非实现 Code to an interface rather than to an implementation.优先使用组…

kubectl get node运行时出现:Unable to connect to the server: x509: certificate signed by unknown authority

kubectl get nodes运行时出现&#xff1a;Unable to connect to the server: x509: certificate signed by unknown authority原因&#xff1a;我们在运行kubeadm reset时&#xff0c;没有删除原先的$HOME/.kube文件导致新建的kubelet报错。实际上在kubeadm reset执行后&#x…

设置在VS2005的IDE中迅速打开xaml文件

设置在VS2005的IDE中迅速打开xaml文件 本人使用普通台式计算机做WPF开发&#xff0c;每次打开xaml的时候&#xff0c;都需要等半天&#xff0c;那叫一个慢呀&#xff0c;实在受不了。即使是一个新建的xaml文件&#xff0c;打开都慢。怎样解决VS2005的IDE中打开xaml文件慢的问题…

Git分支(远程)

1、远程分支的表示形式&#xff1a;远程仓库名称/分支名&#xff0c;如&#xff1a;origin/master&#xff1b;2、一次Git克隆会建立你自己的本地分支&#xff1a;master和远程分支&#xff1a;origin/master&#xff0c;它们都指向origin/master分支的最后一次提交&#xff1b…

kubeadm join时出现错误:[ERROR Port-10250]: Port 10250 is in use [ERROR FileAvailable--etc-kubernetes-pki

kubeadm join时出现错误&#xff1a;[ERROR Port-10250]: Port 10250 is in use&#xff1b;[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists初次使用kubeadm构建k8s集群&#xff0c;所以对子节点加入管理节点的过程认识不足&am…

cs文件中控制页面table的大小、title名称(.aspx)

1. title 控制HTML:<title id"mytitle" runat"server"></title> CS: protected System.Web.UI.HtmlControls.HtmlGenericControl mytitle;mytitle.InnerText "Hello World"; 2. 页面table 控制HTML:<TABLE idTabl…

TCP/IP详解学习笔记(2)-数据链路层

TCP/IP详解学习笔记(2)-数据链路层数据链路层有三个目的&#xff1a; 为IP模块发送和 接收IP数据报。 为ARP模块发送ARP请求和接收ARP应答。 为RARP发送RARP请 求和接收RARP应答ip大家都听说过。至于ARP和RARP&#xff0c;ARP叫做地址解析协议…

vi 按了ctrl+s怎么办

【转载】 手香的不得了 http://blog.sina.com.cn/lx987654321123456789 今天白痴了一把&#xff0c;用vi的时候&#xff0c;习惯性的用了ctrl-s&#xff0c;一下子僵掉了网上一查&#xff0c; 原来&#xff1a; CTRLS表示停止向终端停止输出; CTRLQ恢复向终端输出流. 严重bs自己…

POJ 1966 Cable TV Network (最大流最小割)

$ POJ~1966~Cable~TV~Network $ $ solution: $ 第一眼可能让人很难下手&#xff0c;但本就是冲着网络流来的&#xff0c;所以我们直接一点。这道题我们要让这个联通图断开&#xff0c;那么势必会有两个点变得不连通&#xff0c;这道题的数据范围很小&#xff0c;所以我们试着暴…

harbor安装时出现ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug in

harbor安装时出现ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value current val…

几大开源项目

7-Zip 4.32&#xff1a;文件压缩工具&#xff0c;可与Windows资源管理器集成 A Note 4.2.1&#xff1a;可在Windows桌面放置便笺&#xff0c;并可提供闹钟提醒功能 Abakt 0.9&#xff1a;能够以压缩方式对文档进行备份 Abiword 2.27&#xff1a;Windows写字板的替代程序&…

如何恢复Linux下被误删除的文件以及如何防止文件被删除

【卸载被误删除文件所在的分区&#xff0c;或以只读方式mount】当你发现你误删除了文件后&#xff0c;要做的第一件事情是马上卸载被误删除文件所在分区&#xff0c;或者以只读的方式来挂在该防区。如果误删除的是根分区&#xff0c;最好直接断电&#xff0c;进入单用户模式&am…

配置msdtc

配置msdtc需要分别配置数据库服务器和开发机&#xff0c;因为只有两个机器都配置正确了&#xff0c;分布式事务才不会报乌七八糟的错误。如果数据库服务器和开发机是同一台机器&#xff0c;那就不用看本文了&#xff0c;因为不存在分布式事务的问题。 数据库服务器和开发机中配…

GooglePR说明

内容摘要&#xff1a;无论是对普通网络冲浪者还是网站管理员来说&#xff0c;Google都是目前世界范围内最受欢迎的搜索引擎。它每天处理的搜索请求高达1.5亿次&#xff0c;几乎占全球所有搜索量的1/3。网络冲浪者对Google情有独钟&#xff0c;是由于Google所提供的快速搜索速度…

什么是套接字?Socket基本介绍

什么是套接字&#xff1f;Socket基本介绍一、什么是套接字&#xff1f;二、套接字特性三、套接字缓冲区一、什么是套接字&#xff1f; 套接字是一种通信机制&#xff08;通信的两方的一种约定&#xff09;&#xff0c;socket屏蔽了各个协议的通信细节&#xff0c;提供了tcp/ip…

[ZJOI2007] 时态同步

题面 显然的一个建模是&#xff0c;每个叶子对应一个权值&#xff0c;代表比最晚的叶子早了多久&#xff0c;然后我们要做的就是给每条边赋上值&#xff0c;使得每个叶子到根的路径上的所有边权值和等于叶子的权值。 我们贪心的想一想&#xff0c;必然是离根越近的边赋值多的情…

dsad

应该来说这是两两配对的时间 mouseenter和mouseleave是只对选中的元素的生效 mouseover和mouseout是只对选中的元素及其子元素生效 <iframe width"100%" height"300" src"//jsfiddle.net/xiadd/4hno1wgf/embedded/" allowfullscreen"all…

ARM-Button-Driver-硬件图

1、实物图 2、CPU接线图 3、实际硬件接图 转载于:https://www.cnblogs.com/xmphoenix/archive/2011/11/02/2233519.html