SAS/ACCESS®

Liens utiles

Articles parus

  • Optimisez les performances de traitement de vos données avec SAS/ACCESS® – Décembre 2013 – SAS 9.4 Lire 
  • Les types de connexion lors de l'accès à une base de données – Juin 2013 – SAS 9.3 Lire
  • Manipuler des fichiers Microsoft Office 32-bits avec SAS 64-bits – Décembre 2012 – SAS 9.3 Lire
  • SAS In-Database : quand le traitement SAS s'exécute dans le SGBD – Mars 2012 – SAS 9.3 Lire
  • Les connexions aux bases de données – Décembre 2011 – SAS 9.1 et au-delà Lire
  • Les procédures IMPORT et EXPORT – Avril 2006 – SAS 9.1 Lire
  • SAS®9 sur Unix - Septembre 2004 – SAS 9.1 Lire
  • Une introduction aux accès via OLE DB – Janvier 2004 – SAS 8.2 Lire
  • Accès à SQL Server en version 8 – Avril 2002 – SAS 8.2 Lire

FAQs

  • Comment procéder lorsqu'une bibliothèque déclarée avec un moteur Oracle, DB2, Sybase ou Informix est vide ? Réponse 
  • Comment accéder à MySQL depuis SAS ? Réponse 
  • Est-il possible d'utiliser des fichiers Microsoft Office avec SAS sous Unix ? Réponse 
  • Est-il possible de créer plusieurs feuilles dans un classeur Excel ? Réponse 
  • Comment mettre à jour une table d'une base MS Access ? Réponse 
  • Lors de l'accès à des fichiers Excel via ODBC, dans l'explorateur SAS, les noms des feuilles Excel sont suffixés avec un caractère $. Quelle syntaxe faut-il utiliser dans SAS pour les lire ? Réponse 
  • Comment exporter une table SAS dans Excel sans afficher les noms de colonnes ? Réponse 

Réponses

Caractéristiques :
  • Catégories : SAS/Access
  • OS : Unix, Windows, z/Os
  • Version : SAS® 9.1.3 et au-delà
  • Vérifié en octobre 2009
Comment procéder lorsqu'une bibliothèque déclarée avec un moteur Oracle, DB2, Sybase ou Informix est vide ?

Il est possible que le compte Oracle, DB2 ou Sybase (par exemple) utilisé pour la connexion ne soit pas le propriétaire de ces tables ; il a seulement des droits (en lecture, écriture ou/et mise à jour) donnés par le propriétaire des tables ou par le DBA.

Dans ce cas vous devez utiliser l'option « schema =nom_schema », où nom_schema est le nom du compte Oracle, DB2, Sybase ou Informix propriétaire des tables.

Exemple de déclaration de bibliothèque Oracle :

libname lib_ora1 oracle user=scott orapw=tiger schema=frauser;

Cette information est détenue par l'administrateur de la base de données, ou peut être trouvée via l'interface SQL Query Window de SAS :

1- Exécuter la commande Query.
2- Cliquer sur Tools > Switch access mode > Oracle (ou autre SGBD)
3- Renseigner les champs nécessaires dans l'écran.
Dans la fenêtre " Available tables ", les tables seront alors affichées sous la forme SCHEMA.TABLE.

Aide en ligne :  SCHEMA= LIBNAME Option 

Retour Haut


Caractéristiques :
  • Catégories : SAS/Access
  • OS : Unix, Windows
  • Version : SAS® 8.2 et au-delà
  • Vérifié en Mars 2010
Comment accéder à MySQL depuis SAS ?
R : Avec SAS 8.2, il faut disposer du module SAS/ACCESS to ODBC. SAS s'appuie sur le pilote ODBC de MySQL qui doit donc être installé et configuré au préalable sur la machine. Une fois cette étape réalisée, il suffit de soumettre une instruction libname dans SAS.

Exemple :

libname biblio odbc user=*** password=*** datasrc='....';

A partir de SAS 9.1.2, un accès natif à MySql est proposé avec le module SAS/ACCESS Interface to MySQL .

Exemple :

libname mysqllib mysql user=testuser password=testpass database=mysqldb server=mysqlserv port=9876;

Retour Haut


Caractéristiques :
  • Catégories : SAS/Access OS : Unix
  • Version : SAS® 8.2 et au-delà
  • Vérifié en Mars 2010
Est-il possible d'utiliser des fichiers Microsoft Office avec SAS sous Unix ?

C'est possible à partir de SAS 9.1 en utilisant le module SAS/ACCESS to PC File formats.

Aide en ligne:

Retour Haut



Caractéristiques :
  • Catégories : SAS/Access
  • OS : Unix, Windows
  • Version : SAS® 9.1.3 et au-delà
  • Vérifié en Mars 2010
Est-il possible de créer plusieurs feuilles dans un classeur Excel ?

Oui, à compter de SAS 9, en utilisant le module SAS/Access to PC File Formats. Il existe deux solutions :

  • Utiliser le moteur Excel, dans une instruction libname. 

Voici un exemple de syntaxe :

libname myxls excel 'c:\temp\mon_classeur.xls';
data myxls.b; /* b est le nom de la feuille Excel créée */
set sashelp.class;
run;

  • Utiliser la procédure Export, dont le comportement a été modifié par rapport aux versions précédentes.

Voici un exemple de syntaxe :

proc export data=sashelp.air outfile='c:\temp\mon_classeur.xls';
run;

Et un tableau listant les différences entre la version SAS 9 et les précédentes, selon que le fichier Excel spécifié existe déjà ou non :

 

Outfile = un nouveau fichier Excel

Outfile = un fichier Excel existant

Avant SAS 9

Le fichier Excel est créé, avec une feuille portant le nom de la table SAS.

La procédure Export échoue (fichier excel non créé) sauf si l'option replace est utilisée (le fichier est alors écrasé)

Avec SAS 9

Le fichier Excel est créé, avec, par défaut, une feuille portant le nom de la table SAS. Le nom de cette feuille est paramétrable, en utilisant l'instruction sheet=

Le fichier Excel est mis à jour : une nouvelle feuille est créée. Par défaut, elle porte le nom de la table, mais peut être changée en utilisant l'instruction sheet=

Retour Haut


Caractéristiques :
  • Catégories : SAS/Access
  • OS : Unix, Windows
  • Version : SAS® 9.1.3 et au-delà
  • Vérifié en Mars 2010
Comment mettre à jour une table d'une base MS Access ?

Vous pouvez déclarer une bibliothèque pointant sur une base Access (avec SAS/Access Interface to PC FILES, ODBC ou OLE DB) , puis à mettre à jour une table de la base.

Supposons qu'elle s'appelle 'test', avec les données contenues dans une table SAS, 'ajout' dans notre exemple. La procédure utilisée est la proc append.
libname libacc access path='c:\mabase.mdb';
proc append base=libacc.test data=ajout;
run;

Aide en ligne :  
TS-793: Using SAS® 9.1.3 (and higher) to Read and Write to Microsoft Access Database Files in a Windows Operating Environment
SAS 9.1: How to Access MDB Files from SAS

Retour Haut


 

Lors de l'accès à des fichiers Excel via ODBC, dans l'explorateur SAS, les noms des feuilles Excel sont suffixés avec un caractère $. Quelle syntaxe faut-il utiliser dans SAS pour les lire ? 

Caractéristiques :
  • Catégories : SAS/ACCESS® to ODBC
  • OS : Windows
  • Version : SAS® 8.2 et au-delà
  • Vérifié en Août 2010

Il existe deux solutions :

• Avec une bibliothèque utilisant le moteur ODBC (étape préalable : avoir configuré le pilote ODBC Excel, ici il a été nommé " Excel pour SAS ") :

libname xlsdata odbc dsn="Excel pour SAS";
Et en ajoutant un 'n' après le nom de la feuille à lire :
data test1;
set xlsdata.'Feuil1$'n;
run;

• En SQL Passthru :

proc
 sql;
  connect to odbc (dsn="Excel pour SAS");
    create table test2 as
      select * from connection to odbc
       (select * from "Feuil1$");
  disconnect from odbc;
quit;

Aide en ligne :  
TS-792: Using SAS® 9.1.3 (and later) to Read and Write to Excel 97, 2000, 2002, and 2003 Files in a Windows Operating Environment

Retour Haut


 

Comment exporter une table SAS dans Excel sans afficher les noms de colonnes ?  

Caractéristiques :
  • Catégories : SAS/Access
  • OS : Windows
  • Version : 9.1, 9.2 et 9.3
  • Vérifié en Novembre 2011

L'utilisation de la procédure EXPORT génère inévitablement une ligne avec le nom des colonnes dans Excel.

Exemple de code :
PROC EXPORT data = sashelp.Humid
            dbms = csv
            outfile="c:\sas\test.csv"
            replace;
RUN;
 

Voici une astuce qui vous permettra de ne pas générer les noms de colonnes dans Excel avec la version SAS 9.1 :
 
- Exécuter la PROC EXPORT dans SAS
- Copier le code généré dans le journal
- Supprimer les lignes qui génère les libellés (put "label1" " label2".. . ;)
- Exécuter ce nouveau code.

Voici un exemple basé sur la PROC EXPORT ci-dessus :


data _null_;
      %let _EFIERR_ = 0;
      %let _EFIREC_ = 0;   
      file 'c:\sas\test.csv' delimiter=',' DSD DROPOVER lrecl=32767;
      if _n_ = 1 then       
       do;
        /* les lignes suivantes affichent les libellés et sont à supprimer
     put
            "BulbTemp"
         ','
            "Humidity"
         ','
            "AirTemp"
         ','
            "ColorVar"
         ;
    */
       end;
     set  SASHELP.HUMID   end=EFIEOD;
         format BulbTemp best12. ;
         format Humidity best12. ;
         format AirTemp best12. ;
         format ColorVar $8. ;
       do;
         EFIOUT + 1;
         put BulbTemp @;
         put Humidity @;
         put AirTemp @;
         put ColorVar $ ;
         ;
       end;
      if _ERROR_ then call symputx('_EFIERR_',1); 
      if EFIEOD then call symputx('_EFIREC_',EFIOUT);
      run;

A partir de la version SAS9.2 vous pouvez utiliser l'option PUTNAMES=no :

Voici un exemple basé sur la PROC EXPORT ci-dessus :

PROC EXPORT data = sashelp.Humid
dbms = csv
outfile="c:\temp\test2.csv"
replace;
putnames=no;
RUN;

Aide en ligne :

 

Retour Haut