Добрый день. Импортирую из 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
?
Перед тем, как загрузить я грохаю таблицу и создаю заново.