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

SAS Base Discussion :

Importation d'un fichier excel


Sujet :

SAS Base

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut Importation d'un fichier excel
    Bonjour à tous,
    Je n'arrive pas à importer un fichier excel....
    Je suis sous SAS Studio, j'ai voulu m'aider de l'assistant d'importation mais cela me renvoie des erreurs...

    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
    19
    20
    21
    22
    23
    24
    /* Code généré (IMPORT) */
    /* Fichier source : fusiondocuments - Copie.xlsb */
    /* Chemin source : /folders/myfolders/intro */
    /* Code généré le : 26/06/2019 13:31 */
    libname mabib '/folders/myfolders/intro';
     
    %web_drop_table(MABIB.EXEMPLEBIS);
     
     
    FILENAME REFFILE '/folders/myfolders/intro/fusiondocuments - Copie.xlsb';
    DATA mabib.exemplebis; /* exemplebis est permanente */
    SET fusiondocuments; /* exemple est temporaire */
    RUN;
    PROC IMPORT DATAFILE=REFFILE
    	DBMS=XLSX
    	OUT=MABIB.EXEMPLEBIS
    	GETNAMES=YES
    	REPLACE;
    RUN;
     
    PROC CONTENTS DATA=MABIB.EXEMPLEBIS; RUN;
     
     
    %web_open_table(MABIB.EXEMPLEBIS);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ERROR: File WORK.FUSIONDOCUMENTS.DATA does not exist
    ERROR 22-322: Erreur de syntaxe, l'une des valeurs suivantes est attendue : ;, (, DATAFILE, DATATABLE, DBMS, DEBUG, FILE, OUT, 
                   REPLACE, TABLE, _DEBUG_.  
     
     ERROR 76-322: Syntax error, statement will be ignored.
    ERROR: File MABIB.EXEMPLEBIS.DATA does not exist.
    Si vous pouviez m'aider, d'avance merci

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Import fichier Excel
    Bonjour,

    Citation Envoyé par Statistiques33 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DATA mabib.exemplebis; /* exemplebis est permanente */
      SET fusiondocuments; /* exemple est temporaire */
    RUN;
     
    ERROR: File WORK.FUSIONDOCUMENTS.DATA does not exist
    La table fusiondocuments n'existe pas.

    Citation Envoyé par Statistiques33 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FILENAME REFFILE '/folders/myfolders/intro/fusiondocuments - Copie.xlsb';
     
    PROC IMPORT DATAFILE=REFFILE
    	DBMS=XLSX
    	OUT=MABIB.EXEMPLEBIS
    	GETNAMES=YES
    	REPLACE;
    RUN;
     
    ERROR 22-322: Erreur de syntaxe, l'une des valeurs suivantes est attendue : ;, (, DATAFILE, DATATABLE, DBMS, DEBUG, FILE, OUT, 
                   REPLACE, TABLE, _DEBUG_.
    L'instruction getnames=yes est mal placée.

    De plus selon votre version de SAS vous pouvez essayer d'utiliser le moteur excel et non xlsx pour importer un fichier binaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1    PROC IMPORT OUT=test
    2                DATAFILE="d:/temp/test.xlsb"
    3                DBMS=EXCEL REPLACE;
    4        GETNAMES=YES;
    5    RUN;
     
    NOTE: WORK.TEST data set was successfully created.
    NOTE: The data set WORK.TEST has 3 observations and 2 variables.
    NOTE: PROCEDURE IMPORT used (Total process time):
          real time           0.18 seconds
          cpu time            0.12 seconds
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1    PROC IMPORT OUT=test
    2                DATAFILE="d:/temp/test.xlsb"
    3                DBMS=XLSX REPLACE;
    4        GETNAMES=YES;
    5    RUN;
     
    ERROR: Physical file does not exist, d:\temp\test.xlsb.xlsx.
    NOTE: The SAS System stopped processing this step because of errors.
    NOTE: PROCEDURE IMPORT used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
    Cordialement,

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Merci de m'avoir répondu, j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROC IMPORT OUT=test 
                  DATAFILE="/folders/myfolders/intro/fusiondocuments - Copie.xlsb"
                  DBMS=EXCEL replace;
           GETNAMES=YES;
       RUN;
    et cela m'affiche toujours une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: DBMS type EXCEL not valid for import.
    En vous remerciant,

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Import fichier Excel
    Bonjour,

    Je ne connais pas le format xlsb. Vous pouvez essayer le moteur xls ou xlsx si c'est celui qui vous a été proposé par l'assistant d'import.

    Si ça ne fonctionne pas vous pouvez enregistrer le fichier au format xlsx et utiliser le moteur du même nom.

    Cordialement,

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par mgdondon Voir le message
    Bonjour,

    Je ne connais pas le format xlsb. Vous pouvez essayer le moteur xls ou xlsx si c'est celui qui vous a été proposé par l'assistant d'import.

    Si ça ne fonctionne pas vous pouvez enregistrer le fichier au format xlsx et utiliser le moteur du même nom.

    Cordialement,
    J'ai essayé mais il y a toujours une erreur....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Could not find 'workbook' entry in xlsx file.  rc=00000064 (100)
     Requested Input File Is Invalid
     ERROR: Import unsuccessful.  See SAS Log for details.
    Je ne peux malheureusement pas l'enregistrer en classeur excel car sinon il sera beaucoup trop volumineux et le serveur ne l'acceptera pas (c'était ce que j'avais fait au tout début, mais il y a une limite)
    En vous remerciant,

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Import fichier Excel binaire
    Bonjour,

    Je ne vais pas pouvoir vous aider beaucoup plus. Vous pouvez regarder la discussion Importing issues - .Xlsb file(Excel Binary format) into SAS.

    J'ai testé la première solution et ça fonctionne sur mon fichier test.xlsb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    proc iml;
      submit / R;
        library(RODBC);
        wb <- "d:/temp/test.xlsb";
        con2 <- odbcConnectExcel2007(wb);
        data <- sqlFetch(con2, "Feuil1");
        data;
      endsubmit;
      call importdatasetfromr('data','data');
    quit;
    Ça suppose d'avoir R et le package RODBC installés et l'option -RLANG activée dans SAS (ajouter l'option dans le fichier SASV9.CFG).

    J'espère que ça fonctionnera avec votre fichier.

    Cordialement,

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Merci de m'avoir répondu. Alors j'ai regardé ceci https://www.stat4decision.com/fr/r-dans-sas/ et ceci https://www.sas.com/content/dam/SAS/...sas-9.4-v4.pdf et je n'ai pas ce fameux fichier sasv9 pour pouvoir rajouter dedans l'option. Comme je suis sous SAS studio, peut-être que c'est impossible en fait?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    Bonjour

    vous ne disposez pas de SAS Studio mais de SAS University Edition (qui n'est pas tout à fait identique à SAS Studio).
    Avec SAS UE, il n'est pas possible d'accéder à SASV9.CFG

    Avec PROC IMPORT, le seul moteur capable d'importer du XLSB, c'est le moteur EXCEL qui n'est pas présent dans SAS UE.
    On peut aussi passer par LIBNAME PCFILES pour ouvrir du XLSB sauf que... le moteur PCFILES n'est pas présent dans SAS UE.

    https://communities.sas.com/t5/SAS-P...on/td-p/244098

    comme proposé plus haut, vous gagneriez du temps en transformant votre XLSB en XLSX.

    votre fichier n'est pas aussi gros que ça (85 variables et 72 300 observations - j'ai des infos privilégiées ;-)) et j'ai du mal à croire que la transformation de ce fichier en XLSX puisse causer des problèmes à votre serveur mais si c'est bien le cas, transformez alors votre fichier en fichier CSV... (vous disposez quand même d'Excel ?)

    ce sera du CSV "Français", avec un séparateur point virgule (au lieu de virgule dans les CSV US).

    lorsque vous glisserez/déposez votre fichier pour l'importer, indiquez que c'est un fichier "DLM (Fichier délimité)" puis spécifiez que c'est le point-virgule qui sépare les champs.

    Cordialement

    Sébastien Ringuedé

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Alors finalement j'ai fait un copier collé dans le bloc note de mon fichier puis je l'ai réinjecté dans Excel (ça ne marchait pas en enregistrant dans format CSV directement), puis j'ai importé. Cela marche mais le problème c'est que si je fais proc contents ou proc print cela me met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Liste alphabétique des variables et des attributs
    #	Variable	Type	Long.	Format	Informat
    1	VAR1	Texte	578	$578.	$578.
    2	VAR2	Texte	216	$216.	$216.
    3	VAR3	Texte	390	$390.	$390.
    4	VAR4	Texte	100	$100.	$100.
    5	VAR5	Texte	466	$466.	$466.
    6	VAR6	Texte	240	$240.	$240
    Déjà ce n'est pas bon parce que mes variables ne s'appellent pas comme ça et je n'en ai pas que 6, ensuite si j'effectue la procédure print cela me met cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: Invalid characters were present in the data.
    Voici ce que l'assistant important m'a fait :
    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
    %web_drop_table(WORK.IMPORT);
     
     
    FILENAME REFFILE '/folders/myfolders/fusiondocumentstest.xlsx';
     
    PROC IMPORT DATAFILE=REFFILE
    	DBMS=DLM
    	OUT=WORK.IMPORT;
    	DELIMITER=";";
    	GETNAMES=YES;
    RUN;
     
    PROC CONTENTS DATA=WORK.IMPORT; RUN;
    PROC PRINT DATA=WORK.IMPORT; RUN;
     
    %web_open_table(WORK.IMPORT);
    En vous remerciant,

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    DBMS=DLM, c'est pour du fichier texte (comme les fichiers .CSV, .DAT, .TXT) mais certainement pas pour des fichiers XLSX...

    si vous avez un fichier XLSX, DBMS=XLSX...

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par z6c3po Voir le message
    DBMS=DLM, c'est pour du fichier texte (comme les fichiers .CSV, .DAT, .TXT) mais certainement pas pour des fichiers XLSX...

    si vous avez un fichier XLSX, DBMS=XLSX...
    le problème c'est que cela me met alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    OUT=WORK.IMPORT;
     NOTE: l'instruction précédente a été supprimée.
     76         DELIMITER=";";
                 _________
                 180
     ERROR 180-322: Statement is not valid or it is used out of proper order.
    En vous remerciant,

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    l'instruction DELIMITER=, c'est seulement pour les fichier délimité (lorsque DBMS=DLM)

    un truc comme ça devrait marcher maintenant que vous avez un XLSX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROC IMPORT OUT=test
                   DATAFILE="/folders/myfolders/fusiondocumentstest.xlsx"
                   DBMS=XLSX REPLACE;
           GETNAMES=YES;
           SHEET="le nom de l'onglet dans lequel sont vos données";
    RUN;

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par z6c3po Voir le message
    l'instruction DELIMITER=, c'est seulement pour les fichier délimité (lorsque DBMS=DLM)

    un truc comme ça devrait marcher maintenant que vous avez un XLSX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROC IMPORT OUT=test
                   DATAFILE="/folders/myfolders/fusiondocumentstest.xlsx"
                   DBMS=XLSX REPLACE;
           GETNAMES=YES;
           SHEET="le nom de l'onglet dans lequel sont vos données";
    RUN;
    alors c'est ce que j'ai fait , le problème c'est que :
    1. le volume des données me fait planter le serveur
    2.il m'a tout mis dans une seule variable comme ceci :
    Nom : affichagesas.png
Affichages : 7918
Taille : 46,2 Ko
    3.De plus comment faire pour ne faire afficher (correctement bien sûr) que les 100 premières observations par exemple pour ne pas que cela plante?
    En vous remerciant,

Discussions similaires

  1. Importation d'un fichier excel vers access
    Par zinini dans le forum Access
    Réponses: 2
    Dernier message: 07/07/2006, 13h42
  2. Importation d'un fichier EXCEL EN ACCESS
    Par noob_vba dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2006, 17h13
  3. Réponses: 7
    Dernier message: 23/11/2005, 19h20
  4. Réponses: 7
    Dernier message: 04/10/2005, 19h21
  5. importation d'un fichier excel à destination finale : delphi
    Par pier dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 25/09/2005, 00h23

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