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

Débutez Discussion :

Récupérer les 100 premières lignes d'un gros fichier


Sujet :

Débutez

  1. #1
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut Récupérer les 100 premières lignes d'un gros fichier
    Bonjour à tous,

    Je suis un nouvel utilisateur de SAS Unix 9.2 (d'avance désolé pour mes questions bêtes), je souhaiterais récupérer les 100 premières lignes d'un gros fichier.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    filename monfichier='/saswrk/tata/toto.csv';
     
    data sasuser.extract_monfichier;
    infile monfichier firstobs=100;
    Run;
    Mais ça ne fonctionne pas
    No logical assign for filename MONFICHIER
    Vous sauriez d'où vient le problème SVP ?
    Merci par avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    tu es sur de ton chemin d'acces?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut chemin d'accès infile
    Citation Envoyé par Manoutz Voir le message
    tu es sur de ton chemin d'acces?
    en effet je pense que le problème vient du chemin d'accès mais j'ai vérifié et c'est bien ça pourtant ...

    message d'erreur : Error in the FILENAME statement.

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    filename monfichier '/saswrk/tata/toto.csv';
     
    data sasuser.extract_monfichier;
    infile monfichier firstobs=1 obs=100;
    Run;

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 181
    Points
    181
    Par défaut
    Bonjour,

    Au hasard, essai comme ceci :

    '\\saswrk\tata\toto.csv'

    Sinon pour ne travailler que sur 100 lignes tu as l'option.

    Cordialement

  7. #7
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre réactivité !

    ça fonctionne presque !

    Il fallait supprimer le "=" après "filename mon_fichier"

    Le souci maintenant c'est que mon fichier est vide

    J'ai essayé :
    firstobs=100;

    firstobs=1 obs=100;

  8. #8
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Il manque à ton programme une instruction INPUT (après INFILE) pour décrire une ligne type de ton fichier.
    Je proposerais sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    OPTION OBS=100 ;
    PROC IMPORT DATAFILE='/saswrk/tata/toto.csv' 
                         OUT=sasuser.extract_monfichier
                       DBMS=DLM REPLACE ;
      DELIMITER=";" ;
    RUN ;
    OPTION OBS=MAX ;
    à la place de tout ton code actuel (FILENAME + étape DATA). Les 2 instructions OPTION permettent de limiter temporairement le nombre de lignes écrites dans une table, et d'annuler ensuite cette limitation.

  9. #9
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Citation Envoyé par olivier.decourt Voir le message
    Il manque à ton programme une instruction INPUT (après INFILE) pour décrire une ligne type de ton fichier.
    Je proposerais sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    OPTION OBS=100 ;
    PROC IMPORT DATAFILE='/saswrk/tata/toto.csv' 
                         OUT=sasuser.extract_monfichier
                       DBMS=DLM REPLACE ;
      DELIMITER=";" ;
    RUN ;
    OPTION OBS=MAX ;
    à la place de tout ton code actuel (FILENAME + étape DATA). Les 2 instructions OPTION permettent de limiter temporairement le nombre de lignes écrites dans une table, et d'annuler ensuite cette limitation.
    ah oui l'INFILE .
    attention au noms de colonnes.
    si la première ligne de ton tichier CSV ne correspond pas aux noms des colonnes ( c à d les lignes données commencent à partir de la ligne N°1)
    il faut rajouter à la PROC IMPORT un GETNAMES=NO;
    Sinon Olivier si on met juste le BDMS=CSV sa marchera aussi non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    OPTION OBS=100 ;
    PROC IMPORT DATAFILE='/saswrk/tata/toto.csv' 
                         OUT=sasuser.extract_monfichier
                       DBMS=CSV REPLACE ;
                       GETNAMES=NO;
     
    RUN ;
    OPTION OBS=MAX ;

  10. #10
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    si on met juste le DBMS=CSV ça marchera aussi non?
    Tout dépend du logiciel qui a produit le CSV. Pour SAS, CSV=séparateur virgule (ce qui est la définition historique du CSV, comme son nom l'indique). Pour Excel en français, un CSV a un séparateur point-virgule puisque la virgule sert déjà de séparateur décimal.
    Dans le doute, je préfère utiliser DBMS=DLM et indiquer ensuite clairement le séparateur avec l'instruction DELIMITER : au moins, celui qui reprend le programme derrière voit clairement où agir si le séparateur change dans le futur.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par olivier.decourt Voir le message
    Il manque à ton programme une instruction INPUT (après INFILE) pour décrire une ligne type de ton fichier.
    Je proposerais sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    OPTION OBS=100 ;
    PROC IMPORT DATAFILE='/saswrk/tata/toto.csv' 
                         OUT=sasuser.extract_monfichier
                       DBMS=DLM REPLACE ;
      DELIMITER=";" ;
    RUN ;
    OPTION OBS=MAX ;
    à la place de tout ton code actuel (FILENAME + étape DATA). Les 2 instructions OPTION permettent de limiter temporairement le nombre de lignes écrites dans une table, et d'annuler ensuite cette limitation.
    Super ! ça fonctionne merci !
    En effet il manquait également l'instruction INPUT

  12. #12
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut extraire 100 premières lignes d'un dataset dans WORK
    Savez-vous comment faire pour effectuer cette même extraction mais cette fois-ci à partir d'un dataset se trouvant dans la librairie WORK ?
    En vous remerciant !

  13. #13
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data test;
    set sashelp.class (firstobs=5 obs=14);
    run;
    tu rajoutes les parenthèses.
    si tu veux extraire NBR de ligne à partir de la ligne numéro N
    la règle est:
    OBS=NBR +N-1.
    dans l'exemple c'est :
    OBS=10 +5-1.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par s_a_m Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data test;
    set sashelp.class (firstobs=5 obs=14);
    run;
    tu rajoutes les parenthèses.
    si tu veux extraire NBR de ligne à partir de la ligne numéro N
    la règle est:
    OBS=NBR +N-1.
    dans l'exemple c'est :
    OBS=10 +5-1.
    Super ça fonctionne ! merci beaucoup sam !

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

Discussions similaires

  1. lire dans un fichier les 100 dernières lignes
    Par amarcil dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2007, 19h32
  2. [MySQL] Récupérer les 5 premières cases cochées, sur 30 au total
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/01/2007, 19h02
  3. Récupérer les 50 premières lignes du requête
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/08/2006, 11h15
  4. Récupérer les N derniers lignes
    Par arsenik7 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/05/2006, 13h35
  5. Récupérer les deux premières lettres d'une chaine
    Par moscovisci dans le forum ASP
    Réponses: 3
    Dernier message: 10/01/2006, 14h53

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