Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 19h42   #1
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Par défaut Import d'une liste de fichier

Bonsoir à tous,

J'essaie de lister dans une table tous les fichiers Excel présent dans un répertoire donné.
J'utilise donc un filename toto pipe "DIR/b &mon_dossier.\*.xls", puis une étape DATA.

Si mon fichier contient un accent, cédille ou autre, ce caractère est remplacé par un autre caractère (virgule le plus souvent) dans la table SAS.


Avez vous un moyen pour empecher SAS d'interpreter les accents dans les noms de fichiers ?


Autre question pour ma culture perso,

A quoi sert les instructions en gras dans le code ci dessous (
récupéré du tutoriel de datametric sur les imports de fichiers excel
)?

Code :
1
2
3
4
5
6
7
8
filename dircont pipe "dir/b &EcoSource.\*.xlsx "; 

data _null_ ; 
infile dircont length=11 ;
input @1 fixls $varying200. 11; 
call symputx ( catt("fic",_n_) , scan(fixls,1,'.') ); 
call symputx ( "nbfic" , _n_ ); 
run;
J'utilisais jusqu'à présent, mais dans mon cas actuel, cela ne marche plus.

Code :
1
2
3
4
5
DATA _null_;
length fixls $200.;
INFILE dircont;
input fixls $;
run;
Merci d'avance,
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 22h34   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
mm ah c'est moi ça...

le length te récupère la longueur de la ligne dans la vairable ll dès sa lecture (dans le PDV ) et ensuite je l'utilise pour estimer la taille du champ.

dans ton PIPE tu es certain(e) que les caractères spéciaux sont passés ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 07h54   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonjour.
Une petite version simplifiée de l'étape Data de Stéphane : puisqu'il s'agit de lire toute la ligne sans se planter sur un caractère séparateur, le plus simple est à mes yeux de faire un INPUT sans précision et ensuite d'utiliser la pseudo-variable automatique _INFILE_ (qui n'existe que dans le PDV ).
Pour récupérer les accents, il "suffit" de créer un fichier test, avec tous les caractères accentués dans son nom, et ensuite de faire la traduction avec ce que propose SAS.
Chez moi ça donne ceci :
Code :
1
2
3
4
5
6
DATA _null_ ; 
INFILE dircont ;
input ; 
nomFic = TRANSLATE(_infile_,"àâéèêîôùû", "…ƒ‚ŠˆŒ“—–") ;
putlog nomFic= ;
run;
Peut-être qu'on n'aura pas les mêmes "déformations" de caractères spéciaux (je me demande si c'est SAS ou DOS qui les rend ainsi), mais en faisant des essais, tu trouveras bien les correspondances.
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 09h21   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par olivier.decourt Voir le message
(je me demande si c'est SAS ou DOS qui les rend ainsi), Olivier
Bonjour, c'est le DOS qui ne reconnait pas les caractères spéciaux;

Code :
1
2
3
4
 
x  CD c:\rep_excel ; 
 
x  " dir   *.xls /S /B > c:\temps\contenu.txt";

personnelement j'utilise la fonction translate.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 09h47   #5
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Bonjour,

Merci beaucoup à tous les 3, j'y vois plus clair sur l'utilisation du filename ... pipe.

Ton code, Olivier, marche parfaitement dans mon cas également.

A+
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h05.


 
 
 
 
Partenaires

Hébergement Web