84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
程序的逻辑 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
来读写,效率会高很多。