由于是考虑到大数据量的批量插入,于是想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我亲自做过性能测试,效率非常高。这也是我推荐的技术方案。
技术方案三:
利用SQLServer2008的新特性--表值参数(Table-Valued Parameter)。表值参数是SQLServer2008才有的一个新特性,使用这个新特性,我们可以把一个表类型作为参数传递到函数或存储过程里。不过,它也有一个特点:表值参数在插入数目少于 1000 的行时具有很好的执行性能。
通过CrossTalk在Delphi中使用ADO.Net(1)
Is possible to use ADO .Net from an Win32 Application build with Delphi 7.
maybe using CrossTalk or Hydra?
====================================
You can use the TUniLoader component for loading a big amount of data to the database. TUniLoader provides the functionality for loading with maximum speed. You can find more detailed information about using TUniLoader in the "TUniLoader class" article of the UniDAC documentation. In addition, you can take a look at UniDAC demo project that demonstrates how TUniLoader works. The UniDAC demo project are located in the %UniDAC_Install_Directory%\Demos\UniDacDemo directory.
Also, we had a similar request about slow DB update (here: http://forums.devart.com/viewtopic.php?f=28&t=17621). You can try the solution that was suggested there.
====================================
You can give a try to AnyDAC http://www.da-soft.com/anydac/
There are:
- Array DML, allowing to fast execute multiple INSERT's commands:
http://www.da-soft.com/anydac/docu/Very_High_Performance_using_the_Array_DML.html
http://www.da-soft.com/anydac/docu/Array_DML.html
- TADDataMove component, allowing to move data dataset -> dataset,
text -> dataset, dataset -> text. Different test formats are supported.
====================================
dcc32speed 1.2
How does it work:
The dcc32.exe of Delphi 5 to 7 uses the slow FindFirstFile/FindClose API to retrieve the file date of files. This is very slow and can be replaced by the much faster GetFileAttributesEx.
====================================
Midas Speed Fix 1.2