public function loadDataLocalInfile($table, $columns, $fileName)
{
$filePath = Storage::disk('local')->path($fileName);
$fields = '';
foreach ($columns as $key => $column) {
$fields .= $column . ',';
}
$fields = rtrim($fields, ',');
DB::raw("
LOAD DATA LOCAL INFILE '" . $filePath . "'
INTO TABLE temporary_" . $table . "
FIELDS TERMINATED BY ';'
ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
IGNORE 1 LINES (" . $fields . ")");
$updateColumns = '';
foreach ($columns as $key => $column) {
$updateColumns .= $column . ' = VALUES(' . $column . '),';
}
$updateColumns = rtrim($updateColumns, ',');
DB::raw('
INSERT INTO ' . $table . '
SELECT * FROM temporary_' . $table . '
ON DUPLICATE KEY UPDATE ' . $updateColumns);
}
Когда скрипт выполняется без ошибок и данных, вставленных в БД, все таблицы существуют, когда я делаю
print_r(Storage::disk('local')->get($fileName));
Файл CSV напечатан
"name";"image"
"userNameA";"urlImageA"
"userNameB";"urlImageB"
"userNameC";"urlImageC"
Я добавил PDO :: MYSQL_ATTR_LOCAL_INFILE => true в параметрах mysql в config / database.php