Page 1 sur 1

Pb de saut de ligne dans fichier texte importé dans sql

Posté : 22 sept. 2011, 22:59
par cedeb1971
Bonjour à toutes et à tous,

Voilà j'ai un problème depuis une semaine je cherche sur tous les forums mais je ne trouve pas.

J'importe un fichier texte (c'est en fat un script qui arrive par ftp).
Je le traite pour en séparer les champs délimités par ",".
Jusque là ça va.
Le poblème est qu'à un moment il y a un champs texte et la personne qui entre le texte fait systématiquement un retour à la ligne après quelques mots.
Lorsque j'ouvre l fichier texte effectivement on voit bien la coupure et le retour à la ligne.

Le souci est que lorsque je copie ls données dans la base de données, tout se passe bien jusqu'à ce champ précis.
Là il copie le début (jusqu'au retour à la ligne) correctement et ensuite il traite ce retour à la ligne comme une fin de champ et copie la suite du texte dans le champ suivant. Ensuite tout se décale bien entendu.
J'ai pourtant spécifié que chaque champ était séparé par ",".

Je n'arrive pas à trouver la solution.

Quelqu'un a-t-il une idée ?

Merci d'avance

Re: Pb de saut de ligne dans fichier texte importé dans sql

Posté : 23 sept. 2011, 07:29
par xTG
Comment importes-tu ce fichier ?

Re: Pb de saut de ligne dans fichier texte importé dans sql

Posté : 23 sept. 2011, 09:22
par Mazarini
Bonjour,

Au lieu de lire par ligne, tu peux lire par bloc avec (http://php.net/manual/fr/function.fread.php) et traiter les champs en analysant toi même les caractères (recherche de virgule).

Le plus fiable reste d'imposer un format sans saut de ligne et de le lire avec fgetcsv() (http://www.php.net/manual/fr/function.fgetcsv.php). Le chargement se fait alors avec 2 lectures. Une première pour vérifier le contenu (comptage des erreurs) et une seconde pour le charger.

Je te conseille de rejeter le fichier en cas d'erreur et d'envoyer un mail à l'expéditeur avec la liste des erreurs et de lui demander de refaire le fichier. Par expérience, lorsque l'on est pas sympa et que l'on ne corrige pas soit même le fichier, les utilisateurs sont capable de faire les efforts suffisants pour que tout se passe bien. Dans le cas contraire, il envoient n'importe quoi puisque ca marche toujours.

Re: Pb de saut de ligne dans fichier texte importé dans sql

Posté : 23 sept. 2011, 11:42
par cedeb
Bonjour

D'abord, merci pour vos réponses

Pour l'importation : le fichier est saisi dans un logiciel de gestion de contenu (d'une agence immobilière) et ensuie transféré par ftp sur mon serveur. Je l récupères ensuite à la racine de ceui-ci.

Pour l'interdiction ce n'est pas possible car ce même texte est également utilisé par l'agencepour les affichettes en vitrine. Et là ils on besoin de scinder la première ligne qui contiet la vile et le prix du bien, du reste de la description.

Je vais regarder pour le bloc.

Merci

Cédric

Re: Pb de saut de ligne dans fichier texte importé dans sql

Posté : 23 sept. 2011, 12:21
par Mazarini
Il n'empêche que tu risques d'avoir des "," qui n'ont rien à voir des séparateurs de champs.

C'est au logiciel qui fournit les données à les fournir correctement et pas à toi de te faire chier à bricoler les données. Je fournis des fichiers csv et j'enlève les caractères qui posent problème pour que les clients puissent les ouvrir sans problème.

Re: Pb de saut de ligne dans fichier texte importé dans sql

Posté : 23 sept. 2011, 14:42
par cedeb
Logiquement il ne devrait pas y avoir de données avc des "," qui ne sont pas des champs puisque dans une écriture logique de phrases il n'y a pas de guillements avec une virgule entre deux.

Mais c'est vrai que le concepteur du logiciel a merdé sur ce coup là je pense