基于PHP读取TXT文件向数据库导入海量数据的方法


Posted in PHP onApril 23, 2013

有一个TXT文件,包含了10万条记录,格式如下:

列1       列2       列3   列4   列5
a    00003131    0    0    adductive#1 adducting#1 adducent#1
a    00003356    0    0    nascent#1
a    00003553    0    0    emerging#2 emergent#2
a    00003700    0.25    0    dissilient#1

……………………后面有10万条………………

需求是要导入数据库中,数据表的结构为

word_id   自动增量
word     【adductive#1 adducting#1 adducent#1】这一个TXT记录要转换为3个SQL记录
value     =第三列-第四列;如果=0,则此条记录略过不插入数据表

<?php
    $file = 'words.txt';//10W条记录的TXT源文件
    $lines = file_get_contents($file); 
    ini_set('memory_limit', '-1');//不要限制Mem大小,否则会报错 
    $line=explode("\n",$lines);
    $i=0;
    $sql="INSERT INTO words_sentiment (word,senti_type,senti_value,word_type) VALUES ";    foreach($line as $key =>$li)
    {
        $arr=explode(" ",$li); 
        $senti_value=$arr[2]-$arr[3];
        if($senti_value!=0)
        {
            if($i>=20000&&$i<25000)//分批次导入,避免失败
            {
             $mm=explode(" ",$arr[4]);                
                 foreach($mm as $m)   //【adductive#1 adducting#1 adducent#1】这一个TXT记录要转换为3个SQL记录                 {
                     $nn=explode("#",$m);
                     $word=$nn[0];
                     $sql.="(\"$word\",1,$senti_value,2),";//这个地方要注意到是 word有可能包含单引号(如jack's),因此我们要用双引号来包含word(注意转义)                       
                 }
            }
   $i++;
        }         
    }
    //echo $i;
    $sql=substr($sql,0,-1);//去掉最后一个逗号
    //echo $sql;
    file_put_contents('20000-25000.txt', $sql);  //批量导入数据库,5000条一次,大概需要40秒的样子;一次导入太多max_execution_time会不够,导致失败     
?>

1,海量数据导入到时候,要注意PHP的一些限制,可以临时调整一下,否则会报错

Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes)

2,PHP操作TXT文件

file_get_contents()

file_put_contents()

3,海量导入的时候,最好分批次导入,失败的几率小一些

4,海量导入之前,脚本一定要多次测试无误再使用,比如用100条数据来测试

5,导入之后,如果PHP的mem_limit还是不够的话,程序仍然跑不起来

(建议用修改php.ini的方式来提高mem_limit,而不是用临时的语句)

PHP 相关文章推荐
PHP中对数据库操作的封装
Oct 09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 #PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 #PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 #PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 #PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 #PHP
php多文件上传功能实现原理及代码
Apr 18 #PHP
php实现多张图片上传加水印技巧
Apr 18 #PHP
You might like
第三节 定义一个类 [3]
2006/10/09 PHP
PHP define函数的使用说明
2008/08/27 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
redux.js详解及基本使用
2019/05/24 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
pyqt5中动画的使用详解
2020/04/01 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
一年级学生评语
2014/04/23 职场文书
大学生社会实践方案
2014/05/11 职场文书
大客户经理岗位职责
2015/04/09 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS