laravel将大型xml文件解析为mysql

时间:2018-01-24 10:47:14

标签: php mysql xml laravel

        $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集合和chunk中转换我的数组为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);
                }
            }

这段代码不起作用

1 个答案:

答案 0 :(得分:0)

查看代码,您无需创建集合。您只需array_chunk数据:

hello.*.ts