logo

Client/serveur : proc export

Bonjour,

je travaille sur serveur et souhaiterais enregistrer mes tables sur le serveur sous un autre format que le format SAS (pour importation sous BO designer par la suite).
Merci d’avance.

Bonjour.

Pour l’export vers Business Objects, le type de fichier le plus simple à transmettre depuis SAS est un fichier texte à séparateur tabulation. On peut le produire, avec une version 8 ou supérieure, à l’aide de la procédure EXPORT, comme le titre de votre question le suggérait :

 PROC EXPORT DATA = sashelp.class
 OUTFILE = "~/test.dat"
 DBMS = TAB ;
 RUN ;

 

Le répertoire ~ est la racine de votre compte utilisateur.

L’autre option est d’utiliser un peu de macro-langage et au final une étape Data pour réaliser cet export. Le macro-langage récupère auprès du dictionnaire des données (créé par la PROC CONTENTS) une liste de noms de variable pour l’en-tête du fichier, et une liste de noms de variables pour l’export proprement dit. Ces créations de macro-variables se font dans une procédure SQL. Enfin, une étape Data d’export « classique » avec instructions SET, FILE et PUT, permet d’écrire dans le fichier voulu.

 

 PROC CONTENTS DATA = sashelp.class
 OUT = work.dico NOPRINT ;
 RUN ;
 PROC SQL NOPRINT ;
 SELECT QUOTE(LEFT(TRIM(name))),
 LEFT(TRIM(name))
 INTO : liste_en_tete SEPARATED BY " '09'x ",
 liste_variables SEPARATED BY " '09'x "
 FROM work.dico
 ORDER BY varnum
 ;
 QUIT ;
 DATA _NULL_ ;
 SET sashelp.class ;
 FILE "c:\test.dat" ;
 IF _N_ = 1 THEN PUT &liste_en_tete ;
 PUT &liste_variables ;
 RUN ;

Le charme de ces deux programmes est qu’ils ne nécessitent jamais l’énumération des noms des variables (pratique quand on possède des dizaines ou des centaines de colonnes dans la table à exporter).