IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

Problème d'importation du CSV vers un fichier HyperFile


Sujet :

HyperFileSQL

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut Problème d'importation du CSV vers un fichier HyperFile
    J'essaye d'importer un fichier CSV et enregistrer les données dans un fichiers HyperFile.
    mon fichier a la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    col1;col2;col3;col4;col5
    11;11;11+11+11;11;11
    22;22;22+22+22+22+22;22;22
    33;33;33+33+33+33+33+33+33+33;12;5
    Mais je constate qu'une fois je dépasse une longueur donnée dans la 3 eme colonne, je me trouve avec le problème de mal reconnaissance de séparateur de ligne.
    Cela veut dire, que des lignes ne s'enregistre pas dans la base de données ou le fichier HyperFile.
    J'ai bien augmenté la taille de la colonne 3 de 100 à 200 ( colonne de type Texte), mais le problème persiste toujours.
    Avez-vous une idée de la source du problème ?

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Si tu nous mettais un peu de code, je pense que ça nous faciliterait la tâche...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour à toi aussi

    Citation Envoyé par kariel Voir le message
    Avez-vous une idée de la source du problème ?
    Oui bien sur ! L'erreur se trouve à la ligne 34 de ton code

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Oui bien sur ! L'erreur se trouve à la ligne 34 de ton code
    Je savais qu'on pouvait faire beaucoup de choses avec Windev, mais la j'en suis baba.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    En fait, ce n'est pas un problème de code, parce que j'importe un fichier qui contient plus que 1000 lignes et ça marche.
    Dés que j'intègre à mon fichier un enregistrement qui contient une chaine longue, le problème se crée

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par kariel Voir le message
    En fait, ce n'est pas un problème de code
    On veut bien te croire sur parole

    Mais si la taille de la valeur est inférieure à celle de ta colonne destination c'est qu'il y a bien un problème quelque part
    Dans ta boucle fais une trace de Taille(ta_chaine_a_intégrer), tu verras bien si ça dépasse 200 ou pas

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Non ça dépasse pas, voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    IdFichierXLS est un entier
    i,NbLigne, idTab est un entier
    sFichier,maChaine est une chaîne
    enregistrement est une chaîne
    sFichier = fRepExe() + "\MonFichier.csv"
    IdFichierXLS = fOuvre(sFichier)
    maChaine = fChargeTexte(sFichier)
    NbLigne = ChaîneOccurrence(maChaine,RC)
    SI IdFichierXLS <> -1 ALORS
    	POUR i=1 _A_ NbLigne+1
    		enregistrement = fLitLigne(IdFichierXLS,RC)
    		HLitRecherche(Compte,idCompte,Val(ExtraitChaîne(enregistrement,1,";")))
    		SI HTrouve(Compte) = Vrai ALORS
    			idCpt = Compte.idCompte
    		FIN
    		maTable.col1 = idCpt
    		maTable.col2 = Val(ExtraitChaîne(enregistrement,2,";"))
    		maTable.col3 = ExtraitChaîne(enregistrement,3,";")
    		maTable.col4 = Val(ExtraitChaîne(enregistrement,4,";"))
    		maTable.col5 = Val(ExtraitChaîne(enregistrement,5,";"))
    		maTable.col6= Val(ExtraitChaîne(enregistrement,6,";"))
    		maTable.col7=  Val(ExtraitChaîne(enregistrement,7,";"))
    		HAjoute(maTable)
    	FIN	
    SINON
    	Info(ErreurInfo)
    FIN

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Que de complication pour parcourir un fichier texte
    Puisque tu connais fChargeTexte, autant l'utiliser directement pour lire le fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    maChaine = fChargeTexte(sFichier)
    POUR TOUTE CHAÎNE enregistrement DE maChaine SEPAREE PAR RC
       HLitRecherche(...
       ...
       HAjoute(maTable)
    FIN
    Et si tu as besoin de connaitre le nombre de ligne tu ajoutes NbLigne++ dans ta boucle
    Autre chose : si Compte n'est pas trouvé tu fais quand même ton ajout et de plus avec le compte précédent (car il n'y a pas de HRAZ)

    Si tu tiens à utiliser fOuvre / fLitLigne voici des exemples de syntaxe : http://doc.pcsoft.fr/fr-FR/?10000030...ligne_fonction

    C'est toujours utile de montrer son code même si il semble fonctionner

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    , je sais pas quoi dire, vous avez raison, de plus votre réponse était très utile, voila le code qui marche :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    idTab est un entier
    sFichier,maChaine est une chaîne
    enregistrement est une chaîne
    sFichier = fRepExe() + "\MonFichier.csv"
    maChaine = fChargeTexte(sFichier)
    POUR TOUTE CHAÎNE enregistrement DE maChaine SEPAREE PAR RC
                    HLitRecherche(Compte,idCompte,Val(ExtraitChaîne(enregistrement,1,";")))
    		SI HTrouve(Compte) = Vrai ALORS
    			idCpt = Compte.idCompte
                             maTable.col1 = idCpt
    		         maTable.col2 = Val(ExtraitChaîne(enregistrement,2,";"))
    		         maTable.col3 = ExtraitChaîne(enregistrement,3,";")
    		         maTable.col4 = Val(ExtraitChaîne(enregistrement,4,";"))
    		         maTable.col5 = Val(ExtraitChaîne(enregistrement,5,";"))
    		         maTable.col6= Val(ExtraitChaîne(enregistrement,6,";"))
    		         maTable.col7=  Val(ExtraitChaîne(enregistrement,7,";"))
    		         HAjoute(maTable)
                    sinon
                            //Autre traitements
    		FIN
     
    	FIN
     
    FIN
    Merci beaucoup

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Avec plaisir

    A noter que fChargeTexte peut ne pas fonctionner avec les très gros fichiers
    Dans ce cas il renvoie une chaine vide

    Sur mon poste, au delà de 60 ou 70Mo c'est le cas
    Parfois ça passe avec plus ça dépend des jours et le message d'erreur indique un problème de mémoire

    Dans ce cas il faut utiliser l'autre méthode

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. importer des csv dans un fichier excel
    Par Nico1980 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/02/2011, 20h49
  2. [URL rewriting] N'importe quelle URL vers un fichier
    Par tochbee dans le forum Apache
    Réponses: 2
    Dernier message: 05/03/2009, 19h55
  3. [MySQL] Importation données csv vers mysql via php
    Par ariel257 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2008, 16h56
  4. importer des données vers un fichier
    Par gildo dans le forum Excel
    Réponses: 3
    Dernier message: 24/01/2008, 15h55
  5. Réponses: 12
    Dernier message: 07/12/2005, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo