Aller au contenu

Insérer fichier.txt dans Mysql


michmuch51

Sujets conseillés

Bonjour le hub,

j'ai actuellement un fichier texte avec plusieurs définitions du genre:

Monmot: monmot est issu du latin momot...

Mondeuxiememot: issu du deuxieme mot de momot en latin, mondeuxiememot est....exemple: ninin mondeuxiememot

et donc toutes mes definitions sont dans un fichier txt avec apres chaque définition un retour à la ligne et deux petits point apres le mot à définir, le seul pb c'est que de temps en temps dans le descriptif on retrouve ":" également (du genre "exemple:")

Vous l'aurez compris, je souhaite transférer ce fichier txt dans une bdd définie lemot + la def donc un tableau tout bete avec 3 cellules: id avec auto_increment puis lemot dans la deuxieme et dans la dernière definition

Merci pour votre aide :)

Michmuch

edit: j'espere que j'ai été clair car en me relisant je vois que c'est un peu le fouilli (n'hésitez pas à me le faire savoir si vous ne comprenez rien à ma demande :lol: )

Modifié par michmuch51
Lien vers le commentaire
Partager sur d’autres sites

faut lire ton fichier caractère par caractère jusqu'a ce que tu rencontres le premier ":"

la tu remplis tes champs "id" et "mot" dans ta base

t'as plus qu'a mettre ensuite le reste (ce qui suit les ":") dans ton champ definition

j'espere que j'ai bien compris ton probleme.

exemple: http://www.nexen.net/index.php?option=com_...ction.fgetc.php

Modifié par psylock
Lien vers le commentaire
Partager sur d’autres sites

oui en effet moi ce que je cherche c'est plus les fonctions pour pouvoir justement retrouver ces ":" et ensuite insérer le tout en bdd.

mais je vais essauyer de me débrouiller, je vous renvois la soluce dès que je la trouve (va falloir être patient) :P

Lien vers le commentaire
Partager sur d’autres sites

désolé mais je saisi pas ou on peut définir qu'il faut prendre en compte le premier ":" (celui qui separe le mot de se définition) et pas ceux contenu dans la définition. j comprend bien, me semble t il, l'utilité de load data infile.

mettons j'ai un fichier test.txt comprenant 3 lignes:

mot 1 : premiere definition

mot 2 : ma seconde definiton : contient un deux points

mot 3 : troisieme definition

si on fait ca ?

load data infile 'test.txt' into table ma_table fileds terminated ':'

ca donne ca la table au final

ligne1 mot 1 premiere definition

ligne2 mot 2 ma seconde definiton

ligne3 mot 3 troisieme definition

et il y a donc un morceau de la seconde définition qui disparait...

je vois pas ta technique la :-/

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Effectivement, son problème vient des caractères présents dans le fichier texte et pour celà il n'y a pas de solution miracle:

- soit les champs sont bien délimittés (' ou "), séparés (par une virgule), et terminés (par ; ) et les caractères spéciaux du contenu de chaque champ échappés correctement

- soit on peut rattrapper celà comme tu dis Psylock mais seulement si on peut créer des algorithmes permettant de différencier le contenu, des éléments de délimittation (autant dire que c'est rare que le contenu le permette)

- soit on l'as dans le c**

LOAD DATA INFILE n'est pas une fonction magique, elle ne pourra traiter que des données formattées correctemment, et un algo PHP ne saura pas en faire d'avantage.

Modifié par xou
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...