@microf

Как не добавлять дубликаты в MySql при импорте из csv?

Добрый день. Импортирую из csv большую таблицу - 2 050 000 строк. Разбил файлы `emeditor` на файлы с максимум 10 000 строк и импортирую простым скриптом через exec
for ($i = 1; $i <= 205; $i++) {
  $fileNameWithPrefix = "data-2020-04-05_$i.csv";    
  addDataToTable($dbconn, $table_name, $fileNameWithPrefix);  
}
function addDataToTable($dbt, $table, $file) {
    if ($file) {
        try {
            $fieldseparator = ";";
            $lineseparator = " ";
            $dbt->exec
                    (
                    "LOAD DATA LOCAL INFILE "
                    . $dbt->quote($file)
                    . " INTO TABLE `$table` FIELDS TERMINATED BY "
                    . $dbt->quote($fieldseparator)                    
            );
echo 'Данные добавлены';
            return;
        } catch (PDOException $e) {
            die('Ничего не добавлено' . $e->getMessage());
        }
    } else {
        echo 'Нет файла';
    }
}

И получаю строк в таблице 3 600 000. Что то я гружу несколько раз. В csv дублей нет, в базе появляются.
Это я так скрипт на коленке написал с $i++ или я что-то не знаю про LOAD DATA INFILE?
Перед тем, как загрузить я грохаю таблицу и создаю заново.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы