利用SqlBulkCopy类实现大数据量拷贝
上一篇 /
下一篇 2009-08-27 17:37:07
/ 个人分类:SQL相关
利用SqlBulkCopy,我们不必将数据一条一条的写入数据库,而是将一个datatable中的所有一批数据一次性的导入到数据库中,这样就减少了访问数据库的次数,提高了性能。使用SqlBulkCopy一般会经过以下的步骤:
一、定义一个DataTable类的实例,并给出这个表的结构定义
1. 定义一个DataTable实例 DataTable dt = new DataTable();
2. 给出这个dt的定义:
Type type = typeof(System.String) ;
dt.Columns.Add("DisplayName", type);
dt.Columns.Add("Alias", type);
dt.Columns["DisplayName"].MaxLength = 100;
dt.Columns["Alias"].MaxLength = 100;
二、往dt里添加数据
DataRow dr = dt.NewRow();
dr["DisplayName"] = vendorsArray[j].DisplayName;
dr["Alias"] = vendorsArray[j].alisa;
三、将dt里面的数据一次性导入到数据库
String ConString = "*******";
SqlBulkCopy bcp = new SqlBulkCopy(ConString )
bcp.DestinationTableName = “想往这个表里拷”;
bcp.WriteToServer(dt); bcp.Close();
【注】有时候,在我们调用WriteToServer(dt)的时候,会提示不能将string类型转换成nvarchar类型。比如我数据库里面的字段DisplayName是nvarchar(50)的,但我在dt中将这个列定义为string的,这本来是没有问题的,但是如果dt中这个列中的数据长度大于50了,就会提示说不能将string类型转换成nvarchar类型,这时候我们只要在数据库中将这列的长度改长一些就可以了。
收藏
举报
TAG: