500请教,如何快速将超过十万行记录的文本文件导入数据库! 做一财务系统,需要从文本文件中导入大量的财务数据,数量超过十万,以前采用的方法是使用TStringList.LoadFromFile读取数据,然后逐行分解,但是这个方法只能用于小型的数据集合,在我的实际使用中,导入超过十万行的时候,速度无法令人忍受,请教有没有更好的方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TStringList确实效率不搞,建议直接用delphi的文件处理过程uses FileCtrl;var F: TextFile; s: String; i: Integer;begin AssignFile(F, FileName); Reset(F); while not Eof(F) do begin Readln(F, s); //这里写处理过程 end; CLoseFile(F);end; TStringList.LoadFromFile好像直接写入到内存中了,机器怕是要爆掉。直接用TxtFile来Readln不行吗? 运用ClientDataSet.savetofile保存文件然后用ClientDataSet1.loadfromfile装载数据最后进行数据处理 运用ClientDataSet.savetofile保存文件然后用ClientDataSet1.loadfromfile装载数据最后进行数据处理 我认为用内存映射文件比较好,这是最直接的方法了 将文本文件映射成映射文件,就可以向处理字符串一样来处理文本文件了 通过简单的解析,按记录添加到数据库 当然Insert十几万次是避免不了了,但文本文件操作你绝对放心,映射之后,文件操作完全交给系统来管理 我用TStringList 导入过80万行记录,每条记录20字节。很快,也就几秒钟。我自己写的直接操作文件的都没这么快,不知道为甚么。你这十万纪录需要解决的真正的瓶颈应该是写入数据库的时候,读出来很快的。80万纪录我写入sqlserver 大约写了30分钟(PIII 700/512M)。 你可以1 用DTS和BCP2 用查询数据集:下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...--------------------------------------看见了么,那支蛾子,正飞向太阳,那就是我!-------------------------------------- 线程中使用了xml就不能正确显示结果,求解 ReWrite()发生IO异常问题 #号后面跟一些数字表示什么?比如#255 不用ODBC和BDE如何连接SYSBASE数据库? 怎样改变DBEDIT在不可用状态下的颜色?在线!欢迎高手解答!! 请高手进来! 为什么我的Corba服务会死掉? 字符串的判断 关于LISTVIEW中加入图片的问题。如何在LISTVIEW中加上32*32的图标。我想图标更大些。 Delphi 一般学到中级的水平要花多久? 寻求关于WebBrowser的两个问题 Delphi6问题个位帮帮忙!
uses
FileCtrl;
var
F: TextFile;
s: String;
i: Integer;
begin
AssignFile(F, FileName);
Reset(F);
while not Eof(F) do
begin
Readln(F, s);
//这里写处理过程
end;
CLoseFile(F);
end;
然后用ClientDataSet1.loadfromfile装载数据
最后进行数据处理
然后用ClientDataSet1.loadfromfile装载数据
最后进行数据处理
将文本文件映射成映射文件,就可以向处理字符串一样来处理文本文件了
通过简单的解析,按记录添加到数据库
当然Insert十几万次是避免不了了,但文本文件操作你绝对放心,映射之后,文件操作完全交给系统来管理
80万纪录我写入sqlserver 大约写了30分钟(PIII 700/512M)。
1 用DTS和BCP
2 用查询数据集:
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...--------------------------------------
看见了么,
那支蛾子,
正飞向太阳,
那就是我!
--------------------------------------