用SqlBulkCopy批量插入数据

        /// <summary>

        /// /*将新取的数据加入到临时表中*/

        /// </summary>

        /// <param name="dt"></param>

        public void RankUpdate(DataTable dt)

        {

            if (dt == null || dt.Rows.Count == 0)

                return;

            SqlBulkCopy sbc = new SqlBulkCopy(SqlHelper.WRITECONNECTIONSTRING);

            sbc.BulkCopyTimeout = 900;



            sbc.ColumnMappings.Add("ProductId", "ProductId");

            sbc.ColumnMappings.Add("Name", "Name");

            sbc.ColumnMappings.Add("ImgPath", "ImgPath");

            sbc.ColumnMappings.Add("Price", "Price");

            sbc.ColumnMappings.Add("Unit", "Unit");

            sbc.ColumnMappings.Add("Type", "Type");

            sbc.ColumnMappings.Add("TotalHit", "TotalHit");

            sbc.ColumnMappings.Add("ShopId", "ShopId");

            sbc.ColumnMappings.Add("ShopName", "ShopName");

            sbc.ColumnMappings.Add("ShopUrl", "ShopUrl");

            sbc.ColumnMappings.Add("SiteId", "SiteId");

            sbc.ColumnMappings.Add("SiteName", "SiteName");

            sbc.ColumnMappings.Add("SiteUrl", "SiteUrl");

            sbc.ColumnMappings.Add("HyId", "HyId");

            sbc.ColumnMappings.Add("AreaCode", "AreaCode");

            sbc.ColumnMappings.Add("TypeId", "TypeId");

            sbc.ColumnMappings.Add("SourceId", "SourceId");

            sbc.ColumnMappings.Add("AddTime", "AddTime");

            sbc.DestinationTableName = "ProductHitRank";

            sbc.WriteToServer(dt);

            sbc.Close();



        }

插入数据时要注意一下几点:

  1. 源数据的字段类型要和目标表对应的字段类型相符,否则会发生错误(具体啥错误我这猪脑子已经忘记了!!!)。
  2. 源数据的长度如果超过了目标表对应字段的长度,也会发生错误。
  3. 有时候因为字段中有‘也会发生错误。

嗯,就这些吧,啥时候想起来再写。。。

你可能感兴趣的:(copy)