检测大规模插入学说symfony中的错误插入对象

时间:2017-06-09 13:23:23

标签: php mysql symfony doctrine-orm doctrine

我正在使用Doctrine作为主要任务应该将数据从CSV文件导入数据库的应用程序。至少有50,000个条目。 除了一件事,代码工作完美,检测未插入数据库的行。

if (($handle = fopen($rootPath, 'r')) !== FALSE) {
                set_time_limit(0);
                $tempObjets=array();
                while (($row = fgetcsv($handle, 4096, ';')) !== FALSE) {
                    $iteration++;
                    $contactt = new Contact();
                    $option = array();
                    $optiondata = array();
                    $datacon = new Datacontact();


//precessing row data (read row and put the data into contact

  $datacon->setContact($contactt);
                                $em->persist($datacon);


                            $tempObjets[] = $datacon;

                            if ($iteration % 1000 == 0) {
                                try{

                                    $em->flush();
                                    $em->clear();
                                    foreach ($tempObjets as $tempObject) {
                                        $em->detach($tempObject);
                                    }
                                    $tempObjets = null;
                                    gc_enable();
                                    gc_collect_cycles();

                                }catch (\Doctrine\ORM\ORMException  $e )
                                {
                                    $this->get('session')->getFlashBag()->add('error', 'error');
                                    $this->get('logger')->error($e->getMessage());

                                }

假设我的文件csv包含50000个条目,但是只插入了45000个条目,并且5000个条目包含错误,我应该将它们放在一个数组变量中,例如包含所有错误对象的errorsdata()。

我如何检测是否已插入行以及如何将其添加到errorsdata变量,前提是该脚本每1000次迭代刷新数据。

感谢您的帮助

0 个答案:

没有答案