
把datatable里面的数据插入到数据库,但是数据量大的情况下批量插入会提示超时,所以把datatable的数据分批写入数据库的
using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                connection.Open();
                int pageSize = 100000;//SqlBulkCopy大数据量的时候会超时,所以这里10万一次
                int count = dt.Rows.Count / pageSize;
                for (int i = 0; i <= count; i++)
                {
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
                    {
                        try
                        {
                            // Set the timeout.
                            bulkCopy.BulkCopyTimeout = 0;//默认为 30 秒。 值为 0 表示没有限制;大容量复制将无限期等待。
                            DataTable tmpDt = dt.AsEnumerable().Skip(i * pageSize).Take(pageSize).CopyToDataTable();
                            bulkCopy.DestinationTableName = "表名";
                            bulkCopy.BatchSize = tmpDt.Rows.Count;
                            bulkCopy.WriteToServer(tmpDt);
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                }
            }超时之前操作完成所允许的秒数。
注解
如果操作超时,则不会提交事务,并且将从目标表中删除所有复制的行。





![C++:智能指针[重点!]](https://img-blog.csdnimg.cn/direct/a30e37a2b3304962a6dbb6f8211b115a.png)













