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

Scripts/Batch Discussion :

Traitement en masse sur fichiers CSV


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Par défaut Traitement en masse sur fichiers CSV
    Bonjour,
    J'ai besoin d'aide pour le traitement de fichiers volumineux.
    J'ai pensé à faire un batch pour essayer de traiter en masse, mais à vrai dire je commence à me demander si c’était une bonne idée.
    Je suis plutôt calée en requête SQL mais le batch m'est plutôt étranger, en gros je n'y connais presque rien...
    Je vous explique ma problématique, je dois nettoyer des fichiers pour les intégrer dans une base de données.
    dans cet ordre:
    je dois remplacer les "," par ";"
    je dois remplacer les "." par ","
    je dois remplacer les "; " par ";" (en gros il y a des espaces au début de mes en-têtes qui gênent, mais au pire je pourrais ignorer ma ligne d'en-têtes à l'intégration)==> d'ailleurs je pense que ce sera le meilleur choix.
    je dois remplacer les "O" par "0" quelle que soit la casse
    à chaque fin de ligne je dois ajouter la provenance Belgium, France etc...
    Mon nom de fichier n'est jamais le même
    j'ai réussi en m'inspirant de ce que j'ai pu lire, à ébaucher plusieurs fichiers.bat pour les remplacements de caractères, mais je ne sais pas comment ajouter ma provenance en ignorant la ligne d’en-têtes.
    Mais premièrement j'aimerai pouvoir tout faire avec un seul .bat et surtout j'ai l'impression que ce n'est pas du tout optimisé pour des fichiers volumineux.
    Devrais-je penser à utiliser un autre "langage"? ou bien mon batch est-il juste boiteux? voir ci dessous.
    Dernier point ça m'ajoute un espace en fin ligne à chaque exécution de script.
    Merci d'avance de votre aide

    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
    @echo off & cls
    setlocal enabledelayedexpansion
    
    set "Fichier=Belgium_01_08_2016test.csv"
    set "Fichier_Temporaire=Belgium_01_08_2016test_tmp.csv"
    set "Search_Text=,"
    set "Replace_Text=;"
    
    for /f "tokens=1,* delims=¶" %%A in ( '"type !Fichier!"') do (
    	SET string=%%A
    	SET modified=!string:%Search_Text%=%Replace_Text%!
    	echo !modified! >> !Fichier_Temporaire!
    )
    del !Fichier!
    move !Fichier_Temporaire! !Fichier!
    
    pause
    exit

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Hello SuperMiminus
    Peut-être que cet échange (2010) ancien certes ... peut aider ?
    =>
    http://www.developpez.net/forums/d90...availlant-txt/

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Par défaut
    Citation Envoyé par vttman Voir le message
    Hello SuperMiminus
    Peut-être que cet échange (2010) ancien certes ... peut aider ?
    =>
    http://www.developpez.net/forums/d90...availlant-txt/
    Merci, je vais regarder ça de suite, sinon je suis aussi en train de regarder du côté de vbscript, je me dis qu'un .bat va vite devenir poussif vu la volumétrie de mes données...

    Je suis obligée de trouver une solution, il va juste falloir que je me creuse encore plus les méninges ^^

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Maintenant je ne veux pas m'attirer les foudres de ce forum en matière de complication
    mais comme tu pratiques SQL ...
    Parfois un import dans une table temporaire, 2-3 update et export ça peut le faire ...

    Bon j'ai rien dit

  5. #5
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Hello,

    si tu recherches la rapidité intèresse toi à SED ou FART.

    si tu veux du code ouvert il y a l'excellent

    Jrepl.bat (Hybrid bat/js)

    Sinon en Bat pur j'utiliserais pas le TYPE dans la boucle for c'est lent.


  6. #6
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Par défaut
    @sachadee je vais regarder ça de plus près

    @vttman oui j'ai pensé à SQL, mais justement j'aimerais pouvoir avoir des fichiers propres dès le départs pour automatiser ensuite leur intégration dans la base que je prépare, pour situer l'histoire, c'est ewallet que je vais devoir réconciler avec des comptes bancaires... et bien sur les fichiers sont pas tous au même format
    typiquement pour la provenance j'ai trouvé un contournement que je trouve plus simple et plus fiable

    à l'intégration, à la lecture du fichier je vais créer une table avec idfichier; nomfichier; nbligne et une autre avec idfichier; idligne; champ1; champs 2 etc
    ce qui me permettra de pouvoir supprimer les lignes d'un fichier s'il est faux ou s'il y a eu un problème à l'import

    J'ai vu ce genre de cas dans mon passé... mais bon il est certain que si je ne trouve pas de solution en manipulant le fichier, je vais finir par retraiter directement dans SQL, il faudra seulement que j'ignore ma ligne d'en-tete à cause de ses espaces

    mais j'aimerai quand même pouvoir manipuler mes fichiers ^^ qui a dit que j'étais têtue

Discussions similaires

  1. tri sur fichier CSV
    Par Mouadlib dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2009, 09h33
  2. symbole decimal sur fichier CSV
    Par looping dans le forum Langage
    Réponses: 3
    Dernier message: 19/01/2009, 12h06
  3. [CSV] Traitement d'un gros fichier CSV
    Par Adrinou dans le forum Langage
    Réponses: 6
    Dernier message: 09/10/2007, 12h40
  4. Ecriture sur fichier csv
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 09/01/2007, 11h55

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