84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
程序的逻辑 1,通过ftp下载300MB左右的文件 数据大概是15W条左右 2,过滤字段,重新写入数据库中 ①,先将数据写到文件中 ②,mysql使用load_data_infile 来插入数据
现在写入文件的程序逻辑:
读取一行数据 然后过滤字段,加入数组 到了1000条写入数据库
写入数据有点慢....有什么能加快速度吗 补充下:整条数据有234个字段
业精于勤,荒于嬉;行成于思,毁于随。
量也不大,写文件的部分没有代码,看不出来什么问题,猜一下吧: 把 fopen 拿到循环外。
fopen
写数据库的话,插入的时候用事务。
插入的时候使用存储过程。
把文件拆分成N个小的文件,开N个php进程跑,不就快了?或者直接上java之类的支持多线程的程序跑。
为啥要在循环里面iconv一下?直接放到外面的转编码不行吗
话说,15W条数据,你组合成sql, 1W条一次的写入,写就几秒钟的时间,何必纠结搞什么文件再load_data_infile 呢?
按行操作实在太小气了,如果文件大小有上限的话,干脆用file_get_contents 和 file_put_contents来读写,效率会高很多。
file_get_contents
file_put_contents
量也不大,写文件的部分没有代码,看不出来什么问题,猜一下吧: 把
fopen
拿到循环外。写数据库的话,插入的时候用事务。
插入的时候使用存储过程。
把文件拆分成N个小的文件,开N个php进程跑,不就快了?或者直接上java之类的支持多线程的程序跑。
为啥要在循环里面iconv一下?直接放到外面的转编码不行吗
话说,15W条数据,你组合成sql, 1W条一次的写入,写就几秒钟的时间,何必纠结搞什么文件再load_data_infile 呢?
按行操作实在太小气了,如果文件大小有上限的话,干脆用
file_get_contents
和file_put_contents
来读写,效率会高很多。