Import CSV dans MySQL
arthezius
Messages postés
3756
Statut
Membre
-
arthezius Messages postés 3756 Statut Membre -
arthezius Messages postés 3756 Statut Membre -
Bonjour,
Je cherche actuellement à insérer des fichiers CSV dans ma base MySQL sans passer par PHPmyAdmin (solution marchant parfaitement) car on supposera que je puisse ne pas y avoir accès (hypothèse).
Donc après des recherches je tombe tout d'abord sur ce tuto sur ce cher forum (voir ici).
Mon premier test s'est fait sans la mise en ligne sur la base avec seulement l'affichage des donnés. Toutefois j'ai une ligne totalement vide à la fin du tableau.
Voici ici le fichier test que j'ai fais: page et le fichier CSV: fichier
Ensuite sur un autre tuto j'ai trouvé une solution qui a l'air beaucoup plus simple:
Trouvé ici
Mais là, j'ai du mal.
Partant du principe que je ne souhaite pas spécialement concervé le fichier sur le serveur, j'ai remplacé data.txt par:
Puis en mettant donc:
Toutefois il m'affiche le code suivant:
Pourriez-vous donc m'éclairer sur l'une ou l'autre solution (ou même une troisième qui pourrai fonctionner) ?
Merci par avance.
Je cherche actuellement à insérer des fichiers CSV dans ma base MySQL sans passer par PHPmyAdmin (solution marchant parfaitement) car on supposera que je puisse ne pas y avoir accès (hypothèse).
Donc après des recherches je tombe tout d'abord sur ce tuto sur ce cher forum (voir ici).
Mon premier test s'est fait sans la mise en ligne sur la base avec seulement l'affichage des donnés. Toutefois j'ai une ligne totalement vide à la fin du tableau.
Voici ici le fichier test que j'ai fais: page et le fichier CSV: fichier
Ensuite sur un autre tuto j'ai trouvé une solution qui a l'air beaucoup plus simple:
LOAD DATA INFILE IGNORE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Trouvé ici
Mais là, j'ai du mal.
Partant du principe que je ne souhaite pas spécialement concervé le fichier sur le serveur, j'ai remplacé data.txt par:
$fichier=$_FILES["userfile"]["tmp_name"];
Puis en mettant donc:
$sql="LOAD DATA INFILE '$fichier' INTO TABLE imp FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n'";
Toutefois il m'affiche le code suivant:
Erreur: The file '/tmp/phpIGLBJX' must be in the database directory or be readable by all
Pourriez-vous donc m'éclairer sur l'une ou l'autre solution (ou même une troisième qui pourrai fonctionner) ?
Merci par avance.
A voir également:
- Import CSV dans MySQL
- Mysql community download - Télécharger - Bases de données
- Importer des favoris dans chrome - Guide
- Importer calendrier outlook dans google agenda - Guide
- Convertir csv en ofx - Forum Excel
- Transformer un fichier open office ods en fichier ofx - Forum LibreOffice / OpenOffice
1 réponse
En fait, cela fonctionne très bien.
Etant donné que le premier champ de ma table étant un id avec un auto_increment je pensais devoir laissé un champ vide dans mon csv. Toutefois celà n'est pas réellement obligatoire étant donné le script que j'ai dans mon premier cas que je pense garder.
Le problème était qu'en générant mon csv, il me mettait une ligne vide à la fin soit une quinze ligne. J'ai fait ce constat en ouvrant le fichier dans mon éditeur de texte (bluefish).
Dans le script original, il y avait une condition vérifiant le champ vide que j'avais enlevé car il empêchait l'import. Toutefois, en enlevant le champ vide tout vas bien.
Pour rappel et pour que ça puisse servir à d'autre, le script que j'utilise proviens de ce même forum, ici: https://forums.commentcamarche.net/forum/affich-465200-importer-des-feuilles-excel-dans-mysql#12.
Toutefois si on pouvais quand même m'éclairer sur le deuxième cas que j'énonçais précédemment, ça pourrai toujours être utile...
(Je maintiens le statut actuel de topic quelques temps le temps d'avoir des réponses sur ce cas précis)
Etant donné que le premier champ de ma table étant un id avec un auto_increment je pensais devoir laissé un champ vide dans mon csv. Toutefois celà n'est pas réellement obligatoire étant donné le script que j'ai dans mon premier cas que je pense garder.
Le problème était qu'en générant mon csv, il me mettait une ligne vide à la fin soit une quinze ligne. J'ai fait ce constat en ouvrant le fichier dans mon éditeur de texte (bluefish).
Dans le script original, il y avait une condition vérifiant le champ vide que j'avais enlevé car il empêchait l'import. Toutefois, en enlevant le champ vide tout vas bien.
Pour rappel et pour que ça puisse servir à d'autre, le script que j'utilise proviens de ce même forum, ici: https://forums.commentcamarche.net/forum/affich-465200-importer-des-feuilles-excel-dans-mysql#12.
Toutefois si on pouvais quand même m'éclairer sur le deuxième cas que j'énonçais précédemment, ça pourrai toujours être utile...
(Je maintiens le statut actuel de topic quelques temps le temps d'avoir des réponses sur ce cas précis)