Tôi đang cố gắng chèn (trong cơ sở dữ liệu mySQL) từ một tệp CSV "lớn" (3Mo/37000 dòng/7 cột) bằng cách sử dụng các biểu đồ dữ liệu học thuyết.Symfony: Doctrine data fixture: cách xử lý tệp csv lớn?
Quá trình này rất chậm và tại thời điểm này tôi không thể thành công (có thể tôi phải đợi thêm một chút).
Tôi cho rằng đồ thị dữ liệu học thuyết không có ý định quản lý số lượng dữ liệu đó? Có lẽ giải pháp nên được nhập khẩu trực tiếp csv của tôi vào cơ sở dữ liệu?
Bất kỳ ý tưởng nào về cách tiếp tục?
Đây là mã:
<?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;
}
}
Cảm ơn. Tôi đã cố gắng để tuôn ra ở mỗi chèn nhưng nó là một tần số quá quan trọng, tôi giả sử. Tôi sẽ thử đề xuất của bạn. Xin lỗi nhưng SQL Logging là gì? – Cruz
Doctrine đi kèm với một hệ thống ghi nhật ký lưu giữ các dấu vết của các truy vấn SQL được thực thi. Trong bối cảnh này, bạn sẽ không cần nó, và nó sẽ là một chi phí vô dụng của bộ nhớ. – Terenoth
Ok Tôi hiểu đăng nhập SQL là gì. Và bạn nói đúng, bảng này đến từ một đoạn mã khác và không cần thiết ở đây. – Cruz