利用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:

 

评分:0

我来说两句

Open Toolbar