ZendFramework - Как загрузить файл CSV в базу данных, при повторной вставке следующей записи без автоматического выхода? - PullRequest
1 голос
/ 29 декабря 2011

У меня 500 строк в CSV.400 Вставлено и 401 является дубликатом, это не позволяет мне вставлять после 401 остальное.Мне нужно вручную найти файл CSV и отредактировать его.

Но как я могу сказать адаптеру Zend_Db, если дубликат продолжит следующий, если следующий также является дубликатом, перейдите к следующему, но не выходите, если не все строкисканируются.

Пример:

  $row = Application_Model_Csv::processFile("/var/tmp/csv.csv");
  foreach($row as $k=>$v)
  {
    $insert =array(
      'groups' => $v[0],
      'country'=> $v[1],
      'name' =>$v[2],    /* Unique key */
      'url' => $v[3]
    );
    $this->db->insert("something", $insert);
  } 

1 Ответ

1 голос
/ 29 декабря 2011

Вы можете использовать ЗАМЕНА вместо ВСТАВКИ. В Zend Framework нет специального метода для этого, но вы можете сделать собственный запрос:

$this->db->getAdapter()->query('REPLACE INTO `something` (`groups`, `country`, `name`, `url`)
VALUES ("' . $v[0] . '", "' . $v[1] . '", "' . $v[2] . '", "' . $v[3] . '")');
...