批量插入自增列数据

批量入库sql 操作:

DECLARE @id INT
SET @id=0;
DECLARE @num INT
SET @num=0;
--set statistics IO off
--SET STATISTICS TIME off 

--SET  IDENTITY_INSERT step ON 
--SET  IDENTITY_INSERT step OFF 

SELECT @id=MAX(id) FROM dbo.step(NOLOCK) 
PRINT('begin==')
WHILE 1=1
BEGIN

--PRINT(@id)
SET  IDENTITY_INSERT step ON  
INSERT INTO step([id],[createtime])
SELECT TOP 100 * FROM dbo.step_all(NOLOCK) 
WHERE id>@id
AND id<=11233766
ORDER BY id
SET @id=@@IDENTITY
PRINT(@id)
SET  IDENTITY_INSERT step OFF 


SET @num=@num+1;
PRINT(@num);
IF(@id>=11233766)
BEGIN
PRINT(@id)
PRINT('end==')
BREAK;
END

END

PRINT('======')

----10870243
--10874644
--SELECT  MAX(id),MAX(createtime) FROM dbo.step(NOLOCK) 

 
View Code

后台页面操作(推荐,比较高效,配合索引查询到内存入库):

 public static void NBulkCopy(string connString, string tableName, DataTable dt, int BatchSize)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlTransaction transaction = conn.BeginTransaction())
                {
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction))
                    {
                        bulkCopy.BatchSize = BatchSize;
                        bulkCopy.BulkCopyTimeout = 60;
                        bulkCopy.DestinationTableName = tableName;
                        try
                        {
                            foreach (DataColumn col in dt.Columns)
                            {
                                bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
                            }
                            bulkCopy.WriteToServer(dt);
                            transaction.Commit();
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            throw ex;
                        }
                        finally
                        {
                            bulkCopy.Close();
                            transaction.Dispose();
                            conn.Dispose();
                        }
                    }
                }
            }
        }
View Code

猜你喜欢

转载自www.cnblogs.com/systemkk/p/9886190.html