Я пытаюсь загрузить файл CSV в таблицу. Я получаю сообщение об ошибке в разрешении:
Error importing CSV File: (1045) Access denied for user 'username'@'localhost'
(using password: YES)
SQL=LOAD DATA INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
IGNORE INTO TABLE `csv_import_temp`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
( contact_lname, contact_email ) ;
Файл csv существует, и для него установлены права доступа 0644.
Оператор SQL:
LOAD DATA INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
IGNORE
INTO TABLE `csv_import_temp`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(
contact_lname,
contact_email
);
Я пробовал использовать его как с ведущей одинарной косой чертой, так и с двойной косой чертой (как указано выше) в имени файла. Я также пробовал запустить его в phpAdmin и получил то же сообщение об ошибке.
Сайт размещен на общей учетной записи Hostgator.
Я добавил код, чтобы убедиться, что файл существует и имеет нужные разрешения, и он говорит, что это так. Но похоже, что MySQL не может получить доступ к файлу.
Да, я знаю, что Joomla 2.5 - это конец жизни, но по многим причинам этот сайт нельзя обновить, и он используется только для функций администратора.
Любые предложения приветствуются, поскольку альтернативой является чтение файла с помощью PHP и вставка каждой строки, что будет намного медленнее.
Первые 4 строки CSV:
"name","email"
"John Smith","[email protected]"
"John Doe","[email protected]"
"Jane Doe","[email protected]"






Эта ошибка обычно возникает из-за того, что вы не добавили ключевое слово LOCAL. Пытаться:
LOAD DATA LOCAL INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
IGNORE
INTO TABLE `csv_import_temp`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY ''
IGNORE 1 ROWS
(
contact_email,
contact_email
);
Ошибка разрешения вводит в заблуждение, она связана с попыткой обращения к системным каталогам mysql, а не к файлу, который вы пытаетесь прочитать.
Рад, что это помогло вам начать работу! IGNORE используется для исключения заголовков и т. д., Поэтому он должен начинаться со второй строки. Данные неконфиденциальные? Если да, вы можете задать еще один вопрос и включить строки 1–4, и, надеюсь, мы сможем решить эту проблему.
Я добавил первые 4 строчки. Данные изменены, так как содержат настоящие имена и адреса электронной почты.
Попробуйте удалить LINES TERMINATED BY '\r\n', это выглядит неправильно.
Нет, по-прежнему импортирована только 1 строка. Строки в файле заканчиваются символами \ r \ n, а не \ n.
В чем смысл двойного импорта contact_email? Разве они не должны быть разными? Возможно ли, что поле / столбец, не включенный в импорт, должен быть уникальным и ненулевым? Попробовав ВСТАВИТЬ вторую строку вручную, вы должны получить больше отзывов.
Я попробую.
Нашел проблему. Столбец id должен увеличиваться автоматически, но это не было установлено. Как только это будет исправлено, он импортирует весь файл. Еще раз спасибо за помощь!!
Спасибо, @Nick! Теперь он работает, но импортирует только первую запись из 293 строк в файле. Может быть, это из-за IGNORE во 2-й строке запроса?