delphi新手,苦恼中,请求各位大虾帮助,多谢了。
有个几万行固定格式的文本文件,以:作为分割符,形如:
123:1234:12345:123456:12456
需要对每行数据进行判断,将符合条件的数据导入ms sql数据库,我的做法是:
使用TstringList读入文件,先逐行进行格式和有效性判断。
如果通过,则再逐行copy出固定位置,和进行必要的组合后,插入数据库的表中
可是,运行速度很慢呀,一个文件只有6M多,经过以上处理就要20分钟,请问有没有更好的办法,或者优化一下?多谢多谢!

解决方案 »

  1.   

    内存文件映射,加多线程数据库连接执行,但是数据太多了慢是必然的,数据库正常的一秒钟也就插入几十100条数据,在快的话数据库自己都受不了了,我最多在oracle下1秒钟插入了2000条数据,结果一个select语句执行,一秒才插入了40条,都快司机了
      

  2.   

    先拼接成SQL语句,不要急着提交,而是分批提交,也就是一次性提交500到1000条.多条语句中间使用分号(;)分隔,尽可能使用Connection.Execute或者Command之类的,而不要使用Query.
      

  3.   

    尽量使用数据库本身提供的导入导出工具,比如bcp、dts、imp
    数据文件格式尽量使用导入工具能够支持的格式如果没法控制导出格式,在导入数据时,尽量少用数据引擎,减少中间环节
    比如oracle,能用oci就用oci,少用bde、ado然后就是像僵哥说的,多用sql,少用程序,比如可以用程序生成一批insert ...的sql,然后批量执行sql