Lire un fichier et reprendre les données [php] - PHP - Programmation
Marsh Posté le 18-05-2004 à 15:45:46
je sais pas trop comment est organisé ton fichier, mais tu peux l'ouvrir avec la fonction file qui lit le fichier et met chacune de ses lignes dans une ligne de tableau (si je suis pas clair, la doc le sera un peu plus ), ensuite, pour récupérer la tabulation, il faut rechercher la chaine \t et, pour cela, explode sera ton amie.
enfin, tout ça dépend quand même de la structure de ton fichier
Marsh Posté le 18-05-2004 à 15:56:45
Salut,
Il faudrait que tu nous en dise plus sur l'agencement de ton fichier texte (donne nous un exemple si tu le peux).
Il existe la fonction fopen en php qui te permets d'ouvrir un fichier texte mais les commandes sont nombreuses et il faudrait savoir a quoi ressemble l'interieur de ton fichier.
Sinon la meilleure solution reste encore celle proposée par dropsy cad file('fichier.txt') qui te range chaque ligne de ton fichier dans un tableau.
Marsh Posté le 18-05-2004 à 16:09:11
Bonjour, tout d'abord merci pour vos réponses rapides. Voici un exemple de la structure de mon fichier (c'est le bordel, mais c'est pas ma faute...) pour vous faire une idée:
Alcool blanc 0 Canada |
le truc c'est que quand je l'ouvre avec le bloc note c'est 15fois pire, les retours à la ligne ne se font pas tout le temps, mais quand j'ai fais un copier-coller sur ce post, ben ça a marché...
(il peut y avoir des champs vides)
Marsh Posté le 18-05-2004 à 16:17:35
Donc j'ai quand même essayé avec la fonction file, mais ça marche pas, ça fait comme quand je l'ouvre avec le bloc note, il repère pas les retours à la ligne... C'est bizarre. Quand je l'ouvre dans word ou autre chose ça marche avec les retours à la lignes... Le truc c'est que c'est pas moi qui aie créé ce fichier alors je sais pas exactement sa structure...
Marsh Posté le 18-05-2004 à 16:44:28
Tu peux lire le fichier ligne par ligne avec la fonction fgets. Ensuite l'utilisation de explode te permet de mettre les éléments de ta ligne en tableau (déjà dit plus haut). Il te reste ensuite à insérer le contenu du tableau dans ta base.
Si ton fichier est important, cela peux planter pour des raisons de temps d'exécution. cela va aussi mettre une forte charge sur ton serveur MySQL car ainsi tu fais 1 insertion par ligne.
Il y a une solution assez simple :
Comme c'est visiblement une extraction de BDD, demande à celui qui te l'a envoyé un fichier CSV et ensuite, tu as une superbe fonction dispo sur MySQL :
exemple :
Code :
|
Le fichier CSV est en local sur le serveur.
Marsh Posté le 27-10-2004 à 13:46:47
J'ai essayé cette méthode mais il me dit que ma version de mysql ne supporte pas cette commande
je dois insérer les données d'un fichier CSV dans ma table
Marsh Posté le 27-10-2004 à 14:55:31
gaidjka a écrit : Bonjour, tout d'abord merci pour vos réponses rapides. Voici un exemple de la structure de mon fichier (c'est le bordel, mais c'est pas ma faute...) pour vous faire une idée:
|
Avec une structure de données comme ça, pas grand chose à faire étant donné que les espaces ne signifient pas toujours une nouvelle donnée dans ton cas. ça relève de l'intelligence artificielle...
Ooopss, en éditant ton message, je me rends compte que c'est possible, car heureusement pour toi, ce sont des tabulations qui ont été utilisées... Donc, != entre tabulation et espace, c'est bon, un simple explode fera l'affaire...
Marsh Posté le 27-10-2004 à 17:30:01
ca donnera un truc dans le style :
$file = "/arborescence_jusque_topn_fichier/tonfichier.txt";
$fd = fopen($file, 'r');
while (!feof ($fd) ) {
$buffer = fgets($fd, 4096);
$array = explode("\t", $buffer);
/*
La tu as mainteant $array[0] correpondant au premier mot, $array[1] ..
*/
Et la tu fait tes inserts dans ta base, du genre :
$sql = "INSERT INTO table (champs1, champ2) VALUES ($array[0], $array[1])";
}
Marsh Posté le 18-05-2004 à 15:42:10
Bonjour, voilà mon problème.
J'ai un fichier texte qui contient des données. Je dois donc lire le fichier et récupérer les données pour pouvoir ensuite les insérer dans une base mysql. Les données dans le fichier sont séparées par une tabulation ou un retour chariot... Alors voilà, je sais pas du tout comment m'y prendre pour séparer toutes ces données. Je sais que je dois repérer ou est la tabulation ou le retour chariot, mais je sais pas quelle fonction utiliser...
Merci d'avance!