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

Entrée/Sortie Java Discussion :

Gestion de fichier trié


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Gestion de fichier trié
    Bonjour. Je dois manipuler un fichier contenant plus de 18 millions de lignes (18 506 934 pour être précis). Jusque là, pas de problèmes (juste des temps de traitement élevés).

    Par contre, ce qui me gène, c'est que ce fichier n'est pas trié... au vu du nombre d'enregistrements, j'ai donc des scrupules à mettre tout ça dans une collection pour tenter un .sort

    Qu'existe t'il comme solution ?

    y a t'il une méthode pour trier un fichier (j'y crois pas trop..) ?

    vaut il mieux que je trie mon fichier par une commande MSDos avant de l'exploiter en JAVA après ? car là aussi, problème : je voudrais trier sur plusieurs critères, mais ce n'est pas possible (une seule clé possible avec /+n)

    ou bien avec quel autre outil puis je trier mon fichier ? je n'ai pas assez d'expérience sur le monde PC pour savoir comment m'y prendre... (20 ans de batch en cobol sur BULL et IBM...)

    Merci de vos idées.

    Cdlt

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    Citation Envoyé par kqman Voir le message
    Par contre, ce qui me gène, c'est que ce fichier n'est pas trié... au vu du nombre d'enregistrements
    Le terme enregistrement me fait penser a une base de données .
    Personnellement je ne connais pas de moyen de trier les lignes d'un fichier.

    Quel genre de données se trouve dans le fichier ?
    D'ou viens le fichier ? est il un export d'un autre soft ?
    Les données sont elles amenées a changer fréquemment ?
    Quels genre de traitements sont fait sur le fichier ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour, Alkhan, et merci de ta participation.

    Effectivement, ce fichier est un export d'une base MySql sur laquelle je n'ai pas la main, puisqu'elle est gérée par un soft, et la seule façon que j'ai d'avoir ces données est d'en faire une extraction en fichier séquentiel.

    Ces données représentent les index d'accès à des fichiers PDF de 25.000 pages (pour une gestion electronique de documents).

    Ainsi, j'ai comme données :
    le 28/01/2007, à la page 27, sur 2 pages, j'ai un document de type 'relance client' adressé à mr dupont enregistré
    ou
    le 29/01/2007, à la page 18, sur 6 pages, j'ai un document de type 'liste des mouvement' adressé au compte 664589653
    ou
    le 30/01/2007, à la page 65, sur 5 pages, j'ai un document de type 'relevé conso client' recensé sous la clé unique 0000119653

    donc 3 clés = personne, compte ou adresse unique

    Ces donnés n'évoluent pas (puisque c'est un historique). Les enregistrements vont pas 2 (compte + clé unique, ou personne + clé unique), voire plus (plus d'un compte sur une même page..)

    exemple :
    28/01/2007#27#2#'relance client '#Pers#mr dupont
    28/01/2007#27#2#'relance client '#Uniq#0000119651

    29/01/2007#18#6#'liste mouvement '#Cpt#664589653
    29/01/2007#18#6#'liste mouvement '#Uniq#0000119651

    30/01/2007#65#5#'relevé conso client'#Pers#Mr durand
    30/01/2007#65#5#'relevé conso client'#Uniq#0000119653

    voire
    30/01/2007#65#5#'relevé conso client'#Pers#Mr durand
    30/01/2007#65#5#'relevé conso client'#Pers#Mr dupond
    30/01/2007#65#5#'relevé conso client'#Uniq#0000119653

    Le pb est que ces enregistrements ne sont pas triés et que je doive mettre sur une même ligne les clés compte + clé unique, ou personne + clé unique :

    30/01/2007#65#5#'relevé conso client'#Uniq#0000119653#Pers#Mr durand
    29/01/2007#18#6#'liste mouvement '#Uniq#0000119651#Cpt#664589653

    Mais si je lis séquentiellement, que je tombe sur une clé unique, comment faire pour accéder au numéro de compte si celui ci se trouve 10 millions d'enregistrement plus loin dans le fichier ???

    C'est pourquoi je pensais trier sur le numéro de page et sur la date.

    En espérant avoir été clair... merci d'avance.

    Cdlt

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Si en effet tu ne peux pas faire de requête directement sur la base du soft en question (cela resterait la meilleur solution).

    je pense que le plus simple serait d'importer ces données dans une base perso (d'autant que tu sembles bien connaitre la structure des données), sur laquelle tu pourras faire des requêtes.

    L'import serra surement un peu long, mais ensuite sur le traitement des données, tu vas y gagner en perf. Et surtout tu auras tout ce qu'il faut avec JDBC, pour accéder aux données.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Ce n'est pas à l'ordre du jour, mais à étudier..

    Merci de ta réponse.

    Cdlt

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Est il possible d'envisager de découper ton fichier en n fichiers selon le ou les critères d'accès a ceux ci ? le nom de fichier pourrais contenir le ou les critères !

    Par exemple si les critères de recherche possible sont le nom et le numero de compte alors le nom de fichier contient ces deux informations. Et le fichier lui contient les enregistrements correspondants.

    Tu auras plein de fichiers, mais ils seront plus petit et plus facile a traiter !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Gestion de fichier
    Par Zenol dans le forum C++
    Réponses: 6
    Dernier message: 22/09/2005, 15h44
  2. gestion de fichier à partir d'un formulaire
    Par seb59dk dans le forum Access
    Réponses: 3
    Dernier message: 06/09/2005, 16h52
  3. Fonctions de gestion de fichiers
    Par sebduth dans le forum Fortran
    Réponses: 4
    Dernier message: 22/08/2005, 10h38
  4. [JDOM] Gestion "gros fichiers"
    Par Haazheel dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 17/10/2003, 13h42
  5. [Concept] BD ou Gestion par fichier. Intérêt de la BD ?
    Par Cian dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/11/2002, 12h16

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