SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.01.2018 08:43:29

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Импорт из csv

Нужно импортировать данные из csv в таблицу mysql через PHP. Пробовал с помощью LOAD DATA INFILE, но консоль ругается на отсутствие прав на пользователе(ошибка #1045). Нужно реализовать хотя бы загрузку из корня.
Имеется файл test.csv:
u192ij10;87066467263;1;2018-01-10
u171ij10;87063464263;1;2018-01-15
u112oo10;87066487263;1;2018-01-10
u172ij10;87066467263;1;2018-01-16
И таблица articles(id, gnumber, telephone, author, publicationdate)

Неактивен

 

#2 23.01.2018 09:11:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

Прав нету именно на load data infile? просто insert'ами Вы имеет права вставить в базу эти данные?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 23.01.2018 09:20:59

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

Прав нету именно на load data infile? просто insert'ами Вы имеет права вставить в базу эти данные?

Ошибка
SQL запрос:


LOAD DATA INFILE 'test.csv'
INTO TABLE articles
FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'
Ответ MySQL: Документация

#1045 - Доступ закрыт для пользователя 'ikz12_gagarina'@'%' (был использован пароль: ДА)

Неактивен

 

#4 23.01.2018 09:23:48

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

Попробуйте insert вместо load data?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 23.01.2018 09:25:46

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

Попробуйте insert вместо load data?

Статический анализ:

Найдено 2 ошибок при анализе.

Unexpected keyword. (near "INFILE" at position 7)
Unrecognized statement type. (near "INFILE" at position 7)
SQL запрос:

INSERT INFILE 'test.csv' INTO TABLE articles FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'

Ответ MySQL: Документация

#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около 'INFILE 'test.csv'
INTO TABLE articles
FIELDS TERMINATED BY ';' LINES TERMINATE' на строке 1

Неактивен

 

#6 23.01.2018 09:28:32

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

я имел в виду запрос типа
insert into `articles` values('u192ij10',87066467263,1,'2018-01-10');


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 23.01.2018 09:32:06

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

я имел в виду запрос типа
insert into `articles` values('u192ij10',87066467263,1,'2018-01-10');

Так мне же как раз нужно, чтобы он с файла импортировал в таблицу. А так простой insert/update/delete отлично работают

Неактивен

 

#8 23.01.2018 09:42:14

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

По-моему не хватает прав у Вашего пользователя на load data infile. под рутом попробуйте для начала?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 23.01.2018 12:17:17

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

По-моему не хватает прав у Вашего пользователя на load data infile. под рутом попробуйте для начала?

это не локальный, на личном домене

Неактивен

 

#10 23.01.2018 12:36:53

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

Вы можете под пользователем root подключиться к этой базе?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#11 23.01.2018 12:39:41

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

Вы можете под пользователем root подключиться к этой базе?

нет

Неактивен

 

#12 23.01.2018 12:48:57

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

Тогда надо просить админов или кого-то с админовым доступом, чтобы Вашему пользователю дали права на load data infile.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#13 23.01.2018 14:22:41

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

Тогда надо просить админов или кого-то с админовым доступом, чтобы Вашему пользователю дали права на load data infile.

так я и есть админ big_smile

Неактивен

 

#14 23.01.2018 14:28:27

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Импорт из csv

Тогда смотрите в сторону
GRANT FILE ON *.* to "USER";


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#15 24.01.2018 13:30:12

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

deadka написал:

Тогда смотрите в сторону
GRANT FILE ON *.* to "USER";

а может есть способы решить эту проблему?
#1045 - Доступ закрыт для пользователя 'ikz12_gagarina'@'%' (был использован пароль: ДА)

Неактивен

 

#16 24.01.2018 13:55:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Импорт из csv

Если Вы — админ, тогда у Вас должен быть пользователь, который сможет выполнить GRANT (в данном случае, кажется, что его таки нету).

Также попробуйте LOAD DATA LOCAL INFILE — оно будет требовать права на чтение файлов не на сервере MySQL, а на вебсервере, что, возможно, упростит задачу. Но этот способ может не сработать при условии отключения этой опции со стороны сервера: https://dev.mysql.com/doc/refman/5.7/en … local.html

Неактивен

 

#17 24.01.2018 13:59:46

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

paulus написал:

Если Вы — админ, тогда у Вас должен быть пользователь, который сможет выполнить GRANT (в данном случае, кажется, что его таки нету).

Также попробуйте LOAD DATA LOCAL INFILE — оно будет требовать права на чтение файлов не на сервере MySQL, а на вебсервере, что, возможно, упростит задачу. Но этот способ может не сработать при условии отключения этой опции со стороны сервера: https://dev.mysql.com/doc/refman/5.7/en … local.html

Я единственный пользователь на сервере, все права разрешены. Я пробовал через local, но он не видит этот файл, хотя и расположен в корне сайта. Каким должен быть путь LOAD DATA LOCAL INFILE? Я например просто написал LOAD DATA LOCAL INFILE 'test.csv'

Отредактированно KiViTaL (24.01.2018 14:00:12)

Неактивен

 

#18 24.01.2018 14:16:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Импорт из csv

Ну, путь к файлу нужно все равно указать. __DIR__ в PHP показывает каталог текущего файла.

Неактивен

 

#19 24.01.2018 15:45:02

KiViTaL
Участник
Зарегистрирован: 19.01.2018
Сообщений: 13

Re: Импорт из csv

оке, оставил идею с load data infile. Решил сделать с помощью массива.

<?php
$file = fopen('test.csv', 'r');
while(!feof($file)){
$mass=fgetcsv($file, 1024,';');
}
?>

сначала считываем файл получаем массив. Если его выводить echo то все нормально выводит. Но не получается записать все в таблицу mysql
<form action="intropage.php" id="addform" method="post"name="addform">
 <p><label for="user_login">Госномер<br>
 <input class="input" id="gnumber" style="text-transform:uppercase" name="gnumber"size="32" type="text" value="$mass[0]"></label></p>
<p><label for="user_pass">телефон<br>
<input class="input" id="telephone" name="telephone" type="tel" maxlength="11" placeholder="87XXXXXXXXX" pattern="87[0-9]{9}" title="87XXXXXXXXX"value="$mass[0]"></label></p>
<input class="input" id="author" name="author" type="hidden" readonly value="$mass[2]">
<p><label for="user_pass">Дата окончания ТО<br>
<input class="input" id="publicationdate" name="publicationdate" type="date" value="$mass[3]"></label></p>
<p class="submit"><input class="button" id="add" name= "add" type="submit" value="Добавить"></p>
 </form>

Отредактированно KiViTaL (24.01.2018 15:45:49)

Неактивен

 

#20 24.01.2018 15:56:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Импорт из csv

Не получается, потому что что?

Также: это форум про MySQL, по PHP правильнее вопросы задавать на webew.ru.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson