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

C# Discussion :

Lire fichier csv et remplir dans une base de données


Sujet :

C#

  1. #21
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Ok c'est très gentil, mais c'est son projet de fin d'étude. Pas le tien Tu ne lui rends pas service si tu le fais à sa place. Tu comptes aussi te présenter à la soutenance?

    @YTRABELSI: tu es en retard pour rendre ton projet fin juin?

    @eti1203656: A la lecture de ce code, rien à redire sur la rédaction c'est bien présenté, cependant je vois deux défauts importants:
    1. La complexité: beaucoup trop de boucles et de if. C'est juste impossible à maintenir ou faire évoluer (ex si j'ajoute ou déplace une colonne). "delet_string_file1" a un indice de maintenabilité de 28 et une complexité cyclomatique de 41;
    2. Les performances: tu charges beaucoup trop de données en mémoire. 1800_Scn4_BBH.csv contient plus de 400000 lignes "lst_file1" contient plusieurs millions d'éléments!!

    Si je comprend bien le besoin de départ il faut récupérer certaines données dans un fichier et les importer dans une base.
    1. Lire la ligne des entêtes et demander à l'utilisateur de sélectionner celles qu'il veut (cases à cocher);
    2. Pour chaque colonne demander le type;
    3. Récupérer les indices de chacune des colonnes sélectionnées;
    4. Ouvrir un fichier texte;
    5. Lire une ligne en avant seulement (pas de sauvegarde dans des listes);
    6. Prendre les colonnes demandées selon leur indice, tenter de convertir en fonction de ce que l'utilisateur à saisi et générer une ligne d'instruction BULK INSERT dans le fichier texte. Pour info, dans un fichier csv les séparateurs sont des ";" (la virgule est un séparateur de milliers en US et de décimal en FR!) et les chaînes de caractères sont entre des guillemets (en FR du moins). Pour info 2, les opérations de conversion doivent impérativement être accompagnées du format d'entrée (US, FR, ...) sinon attention aux erreurs de conversion;
    7. Recommencer au point 5 tant que la fin du fichier n'est pas atteinte;
    8. Fermer le fichier texte;
    9. Envoyer le fichier généré au serveur de base de données qui va faire la mise à jour.


    A+
    Bonjour Immobilis,

    1. Je lui ai proposé de commencer une partie du programme car il était débutant et il avait un peu de peine pour commencer, alors je me suis dit que si je l’aidais un petit peut ça pourrais le lancer dans la suite de sa programmation. Mais je reconnais bien que de le faire a sa place ça ne va pas le faire progresser, pour remédier à cette faute je lui ai expliqué les toutes les fonctions et comment je l’avais programmé et penser. De plus je lui je lui ai pas donné le programme en lui disant : « débrouille-toi maintenant ».
    2. Pour les défauts importants, j’en suis bien conscient. J’ai trouvé que c’était plus simple à faire et surtout à comprendre pour lui. De plus ça permettait de ne pas utiliser de base de données. Il m’a dit que ce programme n’avait pas besoin d’être rapide et qu’il n’allait pas être utilisé en prod, donc je me suis permis de ne pas trop respecter les bonnes vielle règle de la programmation (trop de if, trop de boucle, etc..). En effet j’aurais pu utiliser les bases de données comme tu me faite une petite énumération de la marche que j’aurais pu suivre mais, il voulait éviter de les utiliser. Pour le séparateur je ne sais pas si vous le savez mais, quand on est sur une machine Américaine et non française le séparateur du fichier .csv est le "," et non le ";" . Voilà pourquoi je fais le traitement avec ce séparateur. Pour information csv = Comma-separated value, donc "," CQFD.


    Dans l’état actuel je ne sais pas s’il aurait pu faire son programme sans aide donc, j’ai estimé que si je commençais et que je continuais avec lui ça serait la solution la plus judicieuse.

    Meilleures salutations

    Etienne

  2. #22
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    Voilà une release du programme avec moins de "boucle" et moins "if", j'ai aussi refais la fonction "delet_string_file1()".

    Meilleures salutations

    Etienne
    Fichiers attachés Fichiers attachés

  3. #23
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    C'est bien joli tout ça mais si vous discutez entre vous ceux qui lisent cette discussion ne comprendront rien.

    Du coup @eti1203656, je ne comprend pas ton programme.
    1. Pourquoi fais-tu une décomposition par colonne? A mon sens tu devrais garder les champs groupés par leur enregistrement.
    2. Pourquoi gardes-tu la liste lst_file1 qui contient 2 490 402 enregistrements?
    3. La mémoire RAM allouée au programme augmente furieusement quand il parse le fichier
    4. A cause de 1 tu reboucles 2 490 402 fois pour remettre chaque valeur dans une liste correspondant à la colonne?
    5. Quand une erreur de conversion survient, plutôt que de passer et continuer tout plante et il faut recommencer.
    6. J'ai l'impression que cette dernière version met plus de temps. L'indice de maintenabilité de file1() est de 41 et sa complexité de 17. C'est mieux mais bon...
    7. Pourquoi mettre des listebox. Vous comptez passer en revue les 400000 enregistrements du fichier 1800_Scn4_BBH.csv?

    Sinon dans le désordre:
    A+

    PS: YTRABELSI, tu peux faire un effort sur l'orthographe et la grammaire?

  4. #24
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    C'est bien joli tout ça mais si vous discutez entre vous ceux qui lisent cette discussion ne comprendront rien.
    Bonjour Immobilis,

    Tu as raison, je vais demander à YTRABELSI de boucler la discussion.

    Meilleures salutations

    Etienne

  5. #25
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Hello,
    Citation Envoyé par eti1203656 Voir le message
    Tu as raison, je vais demander à YTRABELSI de boucler la discussion.
    Euh, un petit rappel des règles du forum: http://club.developpez.com/regles/#L4.9?
    le principe d'un forum, c'est de répondre sur le forum, pour que tout le monde puisse lire les réponses, profiter des réponses, confirmer, informer ou préciser des réponses déjà faites.

  6. #26
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Hello,Euh, un petit rappel des règles du forum: http://club.developpez.com/regles/#L4.9?

    Bonjour Immobilis,

    Es que tu veux que je mette les discussions Skype, les vidéo de teamviewer ainsi que conversation téléphonique...

    Je suis en accord avec règles du forum mais, je pense que j'ai assez fait en mettant le programme et autre commentaire, alors pense que je n'ai pas trop enfreins les règles.

    Meilleures salutations

    Etienne

  7. #27
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par eti1203656 Voir le message
    je pense que j'ai assez fait en mettant le programme
    Probablement trop à mon avis. Et comme je me suis un peu investi, je serait plutôt vexé que la discussion soit "bouclée" comme ça. Mais bon...

  8. #28
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Probablement trop à mon avis. Et comme je me suis un peu investi, je serait plutôt vexé que la discussion soit "bouclée" comme ça. Mais bon...
    Bonjour Immobilis,

    Moi je ne veux pas la boucler, je lui ai pas encore dit d'ailleur. Par contre comme tu disait "C'est bien joli tout ça mais si vous discutez entre vous ceux qui lisent cette discussion ne comprendront rien.", j'ai pensé que sa ne servait plus a rien de la laisser vu que personne ne comprend rien à ce que l'on fait.

    Alors, je pose ma question ici :

    Comment calcule-tu l'indice de maintenabilité ainsi que de complexité ?

    Qu'ai-je trop fait à ton avis ?

    Meilleures salutations

    Etienne

  9. #29
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par eti1203656 Voir le message
    Comment calcule-tu l'indice de maintenabilité ainsi que de complexité ?
    Visual Studio (certaines versions) le calcule. Tu as une définition ici http://en.wikipedia.org/wiki/Cyclomatic_complexity et une illustration là http://immobilis.developpez.com/arti...ouche-asp-net/.

    A+

  10. #30
    Membre régulier Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Visual Studio (certaines versions) le calcule. Tu as une définition ici http://en.wikipedia.org/wiki/Cyclomatic_complexity et une illustration là http://immobilis.developpez.com/arti...ouche-asp-net/.

    A+
    Bonjour Immobilis,

    Merci pour votre réponse.

    Meilleures salutation

    Etienne

Discussions similaires

  1. Enregistrer des fichiers word, pdf, etc. dans une base de données
    Par mallsoul dans le forum Décisions SGBD
    Réponses: 23
    Dernier message: 10/09/2014, 15h48
  2. Réponses: 0
    Dernier message: 26/10/2009, 11h44
  3. [XML] importer un fichier .log ou .xml dans une base de donnée MySQL
    Par sorayati dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/08/2009, 16h16
  4. Réponses: 12
    Dernier message: 03/01/2009, 21h12

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