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

Shell et commandes GNU Discussion :

Awk - Création d'un jeu de données csv de plusieurs millions de lignes


Sujet :

Shell et commandes GNU

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut Awk - Création d'un jeu de données csv de plusieurs millions de lignes
    Salut la compagnie,

    Je modélise actuellement une BDD MySQl et j'aurais besoin de créer des fichiers csv contenant des jeux de test pour tester l'alimentation de la base.

    Est-il possible en awk de créer des fichiers csv formatés/délimités selon des champs précis et ce sur plusieurs millions de lignes?

    Si oui comment sachant que je suis néophyte en la matière?

    Merci d'avance pour vos réponses.

    Mvk

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Est-il possible en awk de créer des fichiers csv formatés/délimités selon des champs précis et ce sur plusieurs millions de lignes?
    Le mot qui retient l'attention est "créer".
    Il existe différents outils de manipulation de fichiers texte plats. Parmi ceux-là, awk est intéressant car il est capable de retraiter un fichier comme une table de BDD en considérant les textes entre séparateurs comme des champs... comme un fichier csv! Ainsi l'affichage et le retraitement est facile.
    Mais il ne s'agit pas de création.

    Généralement, awk est utilisé pour retraiter les extraits de BDD.

    Après, la question de quantité n'est pas un problème.

    D'où viennent les informations avec lesquelles il faut alimenter la base ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Bonjour,

    Effectivement sur un projet similaire awk est utilisé pour retraiter des extractions de fichier et les reformater comme bon nous semble.

    Je me posais donc la question sur l'utilisation de awk pour créer et non pas seulement retraiter des données.

    A l'heure actuelle sur mon projet ces extractions ne sont pas disponibles mais je souhaiterais tout de même travailler sur des jeux de données bidon de plusieurs millions d'enregistrements (qui viennent de nulle part donc et seules les clés primaires doivent être unique évidemment) afin de tester l'alimentation de la BDD en cours de modélisation et tester les performances suivants les différentes options envisagées.

    J'ai entre temps bricoler un bout de script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!/bin/ksh
     
    > Extract.csv
     
    for i in $(seq 1000000);
    do
    echo "1;1;4578541259658745;2014/12/07 13:45:15;2014/12/07 14:45:15;test;parti;XXXXX;2014/12/07 13:45:15;2014/12/07 14:45:15;21;2014/12/07 13:45:15;2014/12/07 14:45:15;John;Doe;Chemin de la route du boulevard;00000" | awk -v v=$i 'BEGIN {FS=OFS=";"} {$1=v$1;$2=v$2}{print}' >> Extract.csv
    done
    Ca fait ce que je veux mais ça prends 3 plombes, sans compter qu’après j'aimerai modifier aléatoirement des données dans ce fichier pour simuler une nouvelle extraction future.

    Cdlt,
    Mvk

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Oui mais là ce n'est pas awk qui traite un million de données mais un script bash (lent) qui exécute un million de fois (lent) awk.

    Un équivalent plus rapide pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN{for (i=1;i<=1000000;i++) printf "%i1;%i1;4578541259658745;2014/12/07 13:45:15;2014/12/07 14:45:15;test;parti;XXXXX;2014/12/07 13:45:15;2014/12/07 14:45:15;21;2014/12/07 13:45:15;2014/12/07 14:45:15;John;Doe;Chemin de la route du boulevard;00000\n", i,i;}'

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Un peu plus rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seq 1 1000000 | sed 's%.*%&1\;&1\;4578541259658745\;2014/12/07 13:45:15\;2014/12/07 14:45:15\;test\;parti\;XXXXX\;2014/12/07 13:45:15\;2014/12/07 14:45:15\;21\;2014/12/07 13:45:15\;2014/12/07 14:45:15\;John\;Doe\;Chemin de la route du boulevard\;00000%' >extract.csv

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Merci pour vos réponses,

    C'est effectivement "un peu" (comprendre instantané) plus rapide

    Mvk

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

Discussions similaires

  1. Création d'un jeu de données pour un test de charge avec Benerator
    Par ra77 dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 12/07/2014, 23h44
  2. Importation jeu de donnée avec write.csv
    Par samiz dans le forum R
    Réponses: 2
    Dernier message: 23/01/2014, 09h17
  3. Réponses: 5
    Dernier message: 03/09/2012, 10h56
  4. Réponses: 8
    Dernier message: 23/09/2008, 11h20

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