If you try
select ... into ...
this makes minimal logging and it should be faster than insert into approach. In general it's recommended to do inserts/updates/deletes in batches when you deal with huge volume of data.
>I don't know why do you think SQL Server can only insert a batch of 1000? What is the context of this statement as in general it's definitely not right?
>
>>>lnLoop = int(lncount/1000)
>>
>>This works. At first, I tried Math.Int() and thought it was not supported. Now, from your post, I remember that Int() can be used as is.
>>
>>This is part of a class that is used to insert in batch. I have a class InsertRow which is used to insert one record at a time into a table with all the data dictionary validations. But, sometimes, there could be a used to insert in batch thousands of records, where we do no need to validate against the data dictionary. In this case, I can call the InsertInRow class to insert thousdands of records in a flash.
>>
>>lnLoop was used to determine the number of loops as SQL Server can only insert in batch up to 1000 records at a time if I recall corrrectly. So, the part that negotiates with that is as follow:
>>
>>
>> ' If we have no record
>> If lnCount = 0 Then
>> Return True
>> End If
>>
>> ' Get the number of loops
>> lnLoop = Int(lnCount / 1000)
>>
>> ' If it is less than zero
>> If lnLoop = 0 Then
>> lnLoop = 1
>> End If
>>
>> ' For each loop
>> For lnCounter = 1 To lnLoop
>>
>> ' Get the start position
>> lnStart = (lnCounter * 1000) - 1000
>>
>> ' Maximize to the number of records
>> lnMax = Math.Min(lnStart + 1000, lnCount)
>>
>> ' Scan all records
>> For lnCounter2 = lnStart To lnMax - 1
>> loRow = oDataProvider.oDataSet.Tables("Temp").Rows(lnCounter2)
>>
If it's not broken, fix it until it is.
My Blog