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

用ADODataSet.LoadFromFile加载了数据,要将这些数据写入数据库,有什么方法。该如何解决

2012-02-05 
用ADODataSet.LoadFromFile加载了数据,要将这些数据写入数据库,有什么方法。我要实现的是一个类似远程查询

用ADODataSet.LoadFromFile加载了数据,要将这些数据写入数据库,有什么方法。
我要实现的是一个类似远程查询的功能,但因为不能开发数据库端口,所以想通过自己开的端口来传输查询结果。

先是用ADOQuery执行一条SQL查询,然后用ADOQuery.SaveToFile,将查询结果保存到文件。将该文件传送给远程,远程收到后,用ADODataSet.LoadFromFile加载数据(ADOQuery也可以的),然后将这些数据写入数据表。

插入到数据表中的代码是这样的

ADOQuery.SQL.Add( 'select   *   from   TempTable ');   //   打开这张表
ADOQuery.Open;
ADODataSet.LoadFromFile( 'C:\数据文件.tmp ');
ADODataSet.First;
while   not   ADODataSet.Eof   do   begin

    ADOQuery.Append;
    ADOQuery.FieldByName( ' ').AsString:=   ADODataSet.FieldByName( ' ').AsString;
    //.....其他字段
    ADOQuery.Post;

    ADODataSet.Next;
end;

但这样做效率很低,而且CPU占用很大,记录条数一多,就往往会有好长时间都是100的CPU。
请问有没有更加简便高效的方法?


[解决办法]
不要每一条都存呀~
可以批量存入
[解决办法]
全部数据加入QUERY,放到最后再POST,这样应该会效率一点
while not ADODataSet.Eof do begin

ADOQuery.Append;
ADOQuery.FieldByName( ' ').AsString:= ADODataSet.FieldByName( ' ').AsString;
//.....其他字段

ADODataSet.Next;
end;
ADOQuery.Post;

[解决办法]
里面的方法试过很多,我也做过,我是用线程完成的,成批的执行SQL语句。
效率会快点
有人说可以用CLIENTDATASET,但我没有成功。

[解决办法]
txt导入SQLServer

select * from OpenRowset( 'MSDASQL ', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=c:\temp; ', 'select * from aaaa.txt ')

原文
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966

热点排行