sql server大数据追加方法
问题:
需要在客户端将大文本数据追加到远程sql server服务器中。
1、原来实现方法是读fopen打开文本文件,fgets读一行数据,形成数据库字段格式,读500行,后通过ADOquery的insert into语句加到数据库中。运行时间2个多小时,每次追加80多万行数据
2、后改为通过sql server的导入包文件,进行导入,时间20分钟左右。弊端客户端安装sql server。还需进行文件名更改操作。
3、是否存在这样的实现,C++builder调用导入包,可把客户端文本导入服务器呀。网上有调用sp_OACreate过程实现的。
若有实现过的,请告知,谢谢!
[解决办法]
考虑过BULK INSERT呢?
[解决办法]
开启事务,会快少少。
或许你试试FireDAC中的Array提交方式。每次可提交65534条记录
http://www.embarcadero.com/products/rad-studio/firedac
下载:
http://altd.embarcadero.com/download/radstudio/xe3/FireDAC_7.0.1.3119.exe
SAMPLE:
CommandText := 'insert into Customers (ID, Name) values (:ID, :Name)';
// Set up parameter types
Params[0].DataType := ftInteger;
Params[1].DataType := ftString;
Params[1].Size := 40;
// Set up parameters' array size
Params.ArraySize := 10000;
// Set parameter values
for i := 0 to 10000 - 1 do begin
Params[0].AsIntegers[i] := i;
Params[1].AsStrings[i] := 'Somebody ' + IntToStr(i);
end;
// Execute batch
Execute(10000, 0);
BULK INSERT 是从文件或其他资料库中导入,Array DML 接口则是内存数据直接导入。