小弟现项目遇到一个棘手的问题,望各位不吝赐教:
    项目中需要上传文件 ,数据记录200-500万可能更多 ,直接使用数据库命令导入,速度还不错,但是如果需要对数据作验 证呢?在php中循环一条一条验证显然不可行(小数据量还行)  数据量太大,直接死掉。请问有什么好的方法或思路可以解决这个问题  上传大数据量,要兼顾效率,还要做插入数据库之前的数据验证。开发环境:服务器:Apache   数据库postgres PHP5望高手解答  不胜感激

解决方案 »

  1.   

    看来你要做的事情可以分成三块:上传、数据验证、导入。不太清楚你的具体应用背景,感觉你是在做“数据维护功能”而不是“用户交互功能”,所以对“上传”过程本身的用户体验应该没有太苛刻的要求,只要服务器配置得当,能上传大文件就 OK 了,如果真需要“上传进度条”,也有办法,另说。导入,还是建议用数据库导入工具来做,PHP 可以执行外部命令,这个没问题。验证,最好还是在导入后做。可以先导入为临时表,验证完成后再替换正式表。具体的验证过程可以采用分批处理的方式,每次读入一定条数的记录来处理,如果怕处理超时,可以 set_time_limit(0)■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  2.   

    恩,非常感谢您的回答。
    恩  小弟现在的做法也是先导入到临时表  然后再使用select语句去临时表里做格式或者数据验证,然后把临时表里的成功记录和失败记录分开,返回提示信息和导入到实际的表中  了解了一些其他的项目,他们说也是采用临时表的形式加上数据库的命令
      

  3.   

    控制文件指针,一次读固定条数。
    set_time_limit(0);
      

  4.   

    不要让不合适的人做不合适的事,这是管理的要义上传 需采用有断点续传功能的方式,比如 ftp
    导入 应采用数据库管理工具。事务方式,出错回滚
    验证 采用存储过程来完成