1. 程式人生 > >批量插入自增列資料

批量插入自增列資料

 

批量入庫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