Importation d'un fichier csv dans une table de mysql

Fermé
zigroful Messages postés 20 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 29 août 2023 - 26 avril 2021 à 09:07
zigroful Messages postés 20 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 29 août 2023 - 26 avril 2021 à 11:01
Bonjour,
Bonjour à tous,
je débute avec Mysql 8.0.23 sous Ubuntu 20.10 for Linux x86_64.
J'ai installé mysql server et mysql client. et je les ai démarrés l'un avec
sudo service mysql startet le client avec mysql -u root -p .
Tout a bien fonctionné

J'ai créé une base que j'ai nommé Essai et une table T_Essai ayant 6 champs et un index . J'ai indiqué les types de variable des chanps, les longuers etc...et j'ai vérifié par un DESCRIBE T_Essai; que tout est bien entré.

Ma table ne contient que les noms des champs
Dans un de mes répertoires, je possède un fichier csv contenant 6 champs que je souhaite importer dans ma table T_Essai. Ce fichier csv provient d'un fichier excel et les champs sont séparés par des points-virgules.
Lorsque je fais ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part

LOAD DATA LOCAL INFILE 'chemin du fichier csv'
INTO TABLE T_Essai
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

j'obtiens l'erreur suivante:

ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
renseignements pris sur internet, il semblerait que la variable local-infile doit être sur ON. Chez moi, elle est sur OFF et j'ai essayé de la retrouver dans les fichiers my.cnf ou mysql.cnf ou encore mysql.conf.d, en vain.

Je précise que je n'ai pas phpmyadmin ni aucun autre logiciel graphique. je souhaite faire cette importation exclusivement en ligne de commende

Quelqu'un a-t-il une idée sur la résolution de ce problème ?
La commande LOAD DATA LOCAL INFILE ? Est-ce la bonne commande pour ce type de problème ?

Je suis bloqué sur cette question depuis 2 jours ! Si quelqu'un veut bien prendre le temps de me donner des tuyaux, je lui en saurais gré.
Merci


Configuration: Linux / Firefox 87.0
A voir également:

4 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 avril 2021 à 09:33
Bonjour,

l semblerait que la variable local-infile doit être sur ON. Chez moi, elle est sur OFF

Oui il faut la mettre sur ON
et j'ai essayé de la retrouver dans les fichiers my.cnf ou mysql.cnf ou encore mysql.conf.d, en vain.

Si elle n'est pas présente, il suffit de l'ajouter.
[mysqld]
local_infile=ON

Tu peux aussi le faire lors du démarrage de mysql
mysql --local-infile -uroot -pyourpwd yourdbname

0
zigroful Messages postés 20 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 29 août 2023
26 avril 2021 à 09:45
Merci Jordane,
Mais je lis, sur ta ligne de commande pour démarrer mysql, --local-infile mais tu ne donnes pas la valeur TRUE à cette variable. J'ai entré ta ligne de commande et elle ne démarre pas mon client
0
zigroful Messages postés 20 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 29 août 2023
26 avril 2021 à 09:53
J'ai fait :
mysql -p -u root --local-infile Essai

(essai est le nom de ma base déjà créée)
Cela a fonctionné ! mais quand je fais:
show variables;
je vois que local-infile est tjs sur OFF
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 avril 2021 à 10:03
Je ne t'ai donné que la ligne de commande coté client.
Par défaut, sa valeur est à true
Dans la doc, il est indiqué

For the mysql client, local data loading capability is determined by the default compiled into the MySQL client library. To disable or enable it explicitly, use the --local-infile=0 or --local-infile[=1] option.


Côté serveur, il faut démarrer avec l'option
--local-infile[={OFF|ON}] ( donc, dans ton cas, à ON )


Enfin, tout ça c'est dans la documentation.
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile
0
zigroful Messages postés 20 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 29 août 2023
26 avril 2021 à 11:01
Voilà ce que je fais pour lancer le serveur:

sudo service mysql --local-infile=ON start

et voilà ce qu'il me répond

Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status
et il ne lance pas le serveur
0