zoukankan      html  css  js  c++  java
  • 导入列Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes)

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

        有一个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,而不是用时临的语句)

        

        

        

    文章结束给大家分享下程序员的一些笑话语录: N多年前,JohnHein博士的一项研究表明:Mac用户平均IQ要比PC用户低15%。超过6000多的参加者接受了测试,结果清晰的显示IQ比较低的人会倾向于使用Mac。Mac用户只答对了基础问题的75%,而PC用户却高达83%。

  • 相关阅读:
    买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
    asp.net cookie and session
    leelazero and google colab
    download file by python in google colab
    physical processor, core, logical processor
    通过powershell操作eventlog
    openxml in sql server
    get the page name from url
    How to Execute Page_Load() in Page's Base Class?
    Difference between HttpContext.Request and Request
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3037485.html
Copyright © 2011-2022 走看看