Ich versuche, (in einer mySQL-Datenbank) Daten aus einer "großen" CSV-Datei (3Mo/37000 Zeilen/7 Spalten) unter Verwendung von Doktrin Daten Fixtures einzufügen.Symfony: Doctrine data fixture: Wie geht man mit einer großen CSV-Datei um?
Der Prozess ist sehr langsam und zu dieser Zeit konnte ich nicht erfolgreich sein (vielleicht musste ich ein bisschen mehr warten).
Ich nehme an, dass Doktrin Daten Fixtures nicht so viele Daten verwalten sollen? Vielleicht sollte die Lösung sein, meinen CSV direkt in die Datenbank zu importieren?
Irgendeine Idee, wie Sie vorgehen? Hier
ist der Code:
<?php
namespace FBN\GuideBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use FBN\GuideBundle\Entity\CoordinatesFRCity as CoordFRCity;
class CoordinatesFRCity extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
$csv = fopen(dirname(__FILE__).'/Resources/Coordinates/CoordinatesFRCity.csv', 'r');
$i = 0;
while (!feof($csv)) {
$line = fgetcsv($csv);
$coordinatesfrcity[$i] = new CoordFRCity();
$coordinatesfrcity[$i]->setAreaPre2016($line[0]);
$coordinatesfrcity[$i]->setAreaPost2016($line[1]);
$coordinatesfrcity[$i]->setDeptNum($line[2]);
$coordinatesfrcity[$i]->setDeptName($line[3]);
$coordinatesfrcity[$i]->setdistrict($line[4]);
$coordinatesfrcity[$i]->setpostCode($line[5]);
$coordinatesfrcity[$i]->setCity($line[6]);
$manager->persist($coordinatesfrcity[$i]);
$this->addReference('coordinatesfrcity-'.$i, $coordinatesfrcity[$i]);
$i = $i + 1;
}
fclose($csv);
$manager->flush();
}
public function getOrder()
{
return 1;
}
}
Dank. Ich hatte versucht, bei jedem Einsatz zu spülen, aber es war eine zu wichtige Frequenz, nehme ich an. Ich werde deinen Vorschlag versuchen. Entschuldigung aber was ist SQL Logging? – Cruz
Doctrine verfügt über ein Protokollierungssystem, das die Spuren der ausgeführten SQL-Abfragen enthält. In diesem Zusammenhang werden Sie es nicht brauchen, und es wird eine nutzlose Speicherkosten sein. – Terenoth
Ok Ich verstehe, was SQL-Protokollierung ist. Und du hast Recht, dieser Tisch stammt aus einem anderen Code und ist hier nicht notwendig. – Cruz