Как импортировать Excelsheets в сущность доктрины Symfony

Я хочу импортировать ExcelSheet в мою БД с помощью Symfony / Doctrine (импортированный пакет импорта данных ddeboer)

Как лучше импортировать данные и сначала проверить, импортированы ли уже данные?

Я думал о двух возможностях:

1)

$numarray = $repo->findAllAccounts();
$import = true;
foreach ($reader as $readerobjectkey => $readervalue) {
foreach ($numarray as $numkey){
if (($numkey->getNum() == $readervalue['number'])){
$import = false;
}
}

if($import){

$doctrineWriter     ->disableTruncate()
->prepare()
->writeItem(
array(
'num' => $readervalue['number'],
'name'  => $readervalue['name'],
'company' => $companyid
)
)
->finish();

2)

 foreach ($reader as $row =>$value ) {

// check if already imported
$check = $this->checkIfExists($repo,'num', $value['number']);

if ($check){
echo $value['number']." Exists <br>";
}else{echo $value['number']." new Imported <br>";$doctrineWriter     ->disableTruncate()
->prepare()
->writeItem(
array(
'num' => $value['number'],
'name'  => $value['name'],
'company' => $companyid
)
)
->finish();public function checkIfExists($repo, $field, $value){

$check = $repo->findOneBy(array($field => $value));
return $check;

Проблема в том, что с большими документами (3000 строк +) с обоими решениями я получаю тайм-аут ….

Ошибка: превышено максимальное время выполнения 30 секунд

в общем: для проблем с производительностью: предпочтительно генерировать 1000 запросов, чтобы проверить, существует ли значение (findOneBy) или использовать два цикла foreach для сравнения значений?
Любая помощь будет потрясающей!

Спасибо заранее …

2

Решение

Вы можете попробовать проверить filemtime файла: http://php.net/manual/en/function.filemtime.php

Я не уверен, что он будет работать должным образом, но стоит попробовать, чтобы посмотреть, работает ли измененная дата, как ожидалось.

В противном случае вам следует подумать о другом способе проверки данных таким образом, что для этого потребуется много ресурсов. возможно добавление метаданных в файл Excel:

http://docs.typo3.org/typo3cms/extensions/phpexcel_library/1.7.4/manual.html#_Toc237519906

Лучше использовать любой другой способ, чем циклический или запрос к базе данных для больших данных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]