首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

sql server大数据累加方法

2014-01-08 
sql server大数据追加方法问题:需要在客户端将大文本数据追加到远程sql server服务器中。1、原来实现方法是

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 接口则是内存数据直接导入。

热点排行