用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. 有时候因为字段中有‘也会发生错误。

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

原文地址:https://www.cnblogs.com/wz327/p/2098344.html