【问题标题】:laravel parse large xml file to mysqllaravel 解析大型 xml 文件到 mysql
【发布时间】:2018-07-03 09:14:39
【问题描述】:
        $app = new Container;
        $document = new OrchestraDocument($app);
        $reader = new OrchestraReader($document);
        $xml = $reader->load($path);
        $xml1 = simplexml_load_file($path);
      //  print_r($xml1);
        $json = json_encode($xml1);
        $array = json_decode($json, true);
        $clien =$array['cliente'];
             //controll empty value
            $clien = array_map(function($i) {
                $i['indirizzo'] = empty($i['indirizzo']) ? '' : $i['indirizzo'];
                $i['cap'] = empty($i['cap']) ? '' : $i['cap'];
                $i['citta'] = empty($i['citta']) ? '' : $i['citta'];
                $i['prov'] = empty($i['prov']) ? '' : $i['prov'];
                $i['piva'] = empty($i['piva']) ? '' : $i['piva'];
                $i['cfisc'] = empty($i['cfisc']) ? '' : $i['cfisc'];
                $i['luogo_nasc'] = empty($i['luogo_nasc']) ? '' : $i['luogo_nasc'];
                $i['data_nasc'] = empty($i['data_nasc']) ? '' : $i['data_nasc'];
                $i['sesso'] = empty($i['sesso']) ? '' : $i['sesso'];
                $i['tele'] = empty($i['tele']) ? '' : $i['tele'];
                $i['mail'] = empty($i['mail']) ? '' : $i['mail'];
                $i['cell'] = empty($i['cell']) ? '' : $i['cell'];
                $i['cod_card'] = empty($i['cod_card']) ? '' : $i['cod_card'];
                $i['cod_card1'] = empty($i['cod_card1']) ? '' : $i['cod_card1'];
                $i['punti_card'] = empty($i['punti_card']) ? '' : $i['punti_card'];
                return $i;
            }, $clien);
            $collection = collect($clien);
            $collection1 = $collection->chunk(500);

我正在尝试将一个大的 xml 文件导入我的 mysql 数据库。 我正在将我的 xml 文件加载到对象中,我正在将此对象转换为数组,我正在控制空值,并且可以。 现在因为我有一个大查询,我在 laravel 集合中转换我的数组,并一次为 isert 500 条记录分块,但现在我有一个新对象 $collection1。我如何输入查询?我必须在数组中再次转换?

           for($i=0;$i<count($collection1);$i++) {
              var_dump($collection1[$i]);
                $collection1[$i]= stdToArray;
                    DB::connection()->disableQueryLog();
                    DB::table('clientis')->insert($collection1[$i]);
               foreach( $collection1[$i] as $k=>$v){
                var_dump($v);
                }
            }

此代码不起作用

【问题讨论】:

    标签: php mysql xml laravel


    【解决方案1】:

    查看您的代码,您无需创建集合。你可以array_chunk数据:

    /*
    $collection = collect($clien);
    $collection1 = $collection->chunk(500);
    */
    $collection = array_chunk($clien, 500, true);
    

    【讨论】:

    • 可以正常工作,但是我的循环在一个循环后被中断这是我的代码不适用于($i=0;$idisableQueryLog(); DB::table('clientis')->insert($array_clienti); dd('插入录制成功。'); } @Richard Parnaby-King
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2020-10-16
    • 2015-09-15
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多