Alternative à LOAD DATA LOCAL INFILE

poupilou

WRInaute impliqué
Salut à tous,

J'avais un script php qui insérait les données d'un fichier csv dans une table MySQL mais hier il y a eu une mise à jour importante de Plesk et maintenant j'ai un message d'erreur quand j'exécute ce script : "PHP Warning: mysqli::query(): LOAD DATA LOCAL INFILE forbidden in....".

Ce n'est pas la première fois que je galère avec l'import de données dans une table depuis un fichier csv avec la commande "LOAD DATA LOCAL INFILE" ou "LOAD DATA INFILE", donc je me posais la question : quelle autre alternative avons-nous pour insérer des données depuis un fichier csv dans une table MySQL ?

Mon fichier csv est assez gros, il fait plus de 80Mo et il a plus de 200 000 lignes. Les données du fichier csv sont séparées par des virgules et il y a un retour chariot à la fin de chaque ligne. Il faut ignorer la première ligne qui contient le nom des champs du fichier csv. Il peut y avoir des données vides pour certaines lignes, on aura alors une double virgule, par exemple "toto,6658,,tata,tutu".

Exemple du fichier csv :
NomChamps1,NomChamps2,NomChamps3,NomChamps4,NomChamps5,NomChamps6, NomChamps7
556,coucou,9879,toto,445646,tata,tutu
9999,ligne2,4485,toto2,02333,,tutu2
4587,ligne3,,toto3,7877,tata3,tutu3

C'est une mise à jour quotidienne, via une tache cron.

Merci pour votre aide.
 

poupilou

WRInaute impliqué
Merci Spout pour ces infos mais je cherche une autre solution que LOAD DATA LOCAL INFILE ou LOAD DATA INFILE pour insérer des données dans une table MySQL depuis un fichier csv, en connais-tu une ?
 

poupilou

WRInaute impliqué
Merci Spout, j'ai trouvé cette solution https://gestion.rapide.net/knowledgebase/113/La-fonction-LOAD-DATA-LOCAL-INFILE.html qui marche parfaitement bien.

J'ai l'impression que LOAD DATA LOCAL INFILE n'est pas très sécurite, je préfère donc abandonner définitivement cette fonction et me tourner vers une bonne vieille requête MySQL "INSERT INTO....", certes c'est bien moins rapide qu'un LOAD DATA LOCAL INFILE mais bon on ne peut pas tout avoir dans la vie :)
 

Discussions similaires

Haut