我写了一个批量导入数据的代码。
过程是这样的,先读取一个数据表中的数据,然后将其插入到新的表中。
第一次,我先是全部读取,然后一起插入。结果出错,应该是数据量过大。第二次,我修改了一下代码,先导入前150条,当用户单击“继续”的时候导入下150条,这样反复,发现一般导入450条到600条的时候就会报错。如果导入300条后等几秒后再单击“继续”的时候。导入就会正常。请问各位大虾,有什么好办法解决这种从一个数据表读取大量数据导入到另一个数据表的方法吗???

解决方案 »

  1.   

    找到php.ini文件中的max_execution_time这一项,把值改大就可以了
    估计一下你的数据导完的时间大概是多少,设置相应的值。
    前一段时间我就是这样做的,我设置的是30000。
      

  2.   

    一般都使用mysql命令行导出,再以mysql命令行导入.(mysqldump,mysqlimport,source...)
    或者用phpmyadmin的代码运行导出导入了(碰到大文本要注意php.ini的一些设置,memory_limit,upload_max_filesize..)
      

  3.   

    连接mysql,执行插入操作后,及时退出。
    可能跟mysql连接数有关。
      

  4.   

    应该不会有这种情况的,可能你代码没定好,
    一般来说把PHP的超时时间设为0
    set_time_limit(0);来实现
    然后每读取一个,就插入一条,
    但在循环的时候,要记得控制内存,
    另外如果记录里面有大字段的话,最好是生成SQL文件,然后用source导,
    我用循环读取再导入的话最多处理过和万多条记录,也基本没事,一次搞定的。像你几百条就出错,肯定不会的。
      

  5.   

    补充几点:
    1.我使用的是Codeigniter框架。所以数据库的效率肯定比直接使用mysqli方法低一些。
    2.3楼提出的方法不是原因,因为数据插入完成后我就用close()方法把数据库连接关闭掉。
    3.1楼和6楼的方案我明天试试看。
    谢谢大家。要是还有方案大家都提出来哈。集思广益一下。
      

  6.   

    MySQL 企业版的管理器试试,那个支持大数据量的操作