Код: Выделить всё
while (true)
{
foreach($array as $row)
{
$item = $em->getRepository('reponame')->findOneBy(array('filter'));
if (!$item)
{
$needPersist = true;
$item = new Item();
}
$item->setItemName()
// and so on ...
if ($needPersist)
{
$em->persist();
}
}
$em->flush();
}

- Выбираем уже запись из репозитория.
- Если запись не существует, создаем ее. .
- Установить для него новые (обновить) переменные.
- Применить действия (сбросить).
PS: Каждая запись в БД уникальна по нескольким столбцам (не только по идентификатору).
Подробнее здесь: https://stackoverflow.com/questions/165 ... of-queries