Attention : This code requires administrator privileges.
The `table.addCaslib` action from the `Table` action set is used to create an Oracle caslib. Essential parameters include the caslib name, the data source type (`srctype="oracle"`), authentication information (username and password), and the Oracle database connection path (format `//<db_host>:<port>/<db_name>`). Once the caslib is added, Oracle tables can be loaded into CAS memory for distributed analytics.
Data Analysis
Type : CREATION_INTERNE
Examples use generated data (datalines) or SASHELP and simulated connection information for the Oracle database.
1 Code Block
PROC CAS / table.addCaslib
Explanation : This example shows the simplest way to add an Oracle caslib. It specifies the caslib name ('orlib'), the source type ('oracle'), connection credentials, and the database access path. It attempts to delete the caslib if it already exists before creating it to ensure a clean environment.
Copied!
/* Démarrer une session CAS si ce n'est pas déjà fait */
options cashost="cloud.example.com" casport=5570;
cas casauto;
proc cas;
session casauto;
/* Supprimer la caslib si elle existe déjà pour éviter les erreurs */
simple.dropCaslib / caslib='orlib';
/* Ajouter une caslib Oracle avec les informations de connexion minimales */
table.addCaslib result=r /
caslib="orlib",
datasource={
srctype="oracle",
username="myuser",
password="mypass",
path="//oradb.example.com:1521/mydb"
};
print r;
run;
quit;
1
/* Démarrer une session CAS si ce n'est pas déjà fait */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
5
PROC CAS;
6
SESSION casauto;
7
/* Supprimer la caslib si elle existe déjà pour éviter les erreurs */
8
SIMPLE.dropCaslib / caslib='orlib';
9
10
/* Ajouter une caslib Oracle avec les informations de connexion minimales */
11
TABLE.addCaslib RESULT=r /
12
caslib="orlib",
13
datasource={
14
srctype="oracle",
15
username="myuser",
16
password="mypass",
17
path="//oradb.example.com:1521/mydb"
18
};
19
20
PRINT r;
21
RUN;
22
QUIT;
23
2 Code Block
PROC CAS / table.addCaslib
Explanation : This example extends the basic case by adding common options. 'globals=TRUE' makes the caslib accessible to all CAS sessions, and 'subdirs=TRUE' allows the caslib to access subdirectories of the specified database path. A description is also added for better documentation.
Copied!
/* Démarrer une session CAS si ce n'est pas déjà fait */
options cashost="cloud.example.com" casport=5570;
cas casauto;
proc cas;
session casauto;
/* Supprimer la caslib si elle existe déjà */
simple.dropCaslib / caslib='global_orlib';
/* Ajouter une caslib Oracle, la rendant globale et permettant l'accès aux sous-répertoires */
table.addCaslib result=r /
caslib="global_orlib",
description="Caslib Oracle globale avec sous-répertoires",
path="//oradb.example.com:1521/mydb",
datasource={
srctype="oracle",
username="myuser",
password="mypass"
},
globals=TRUE,
subdirs=TRUE;
print r;
/* Lister les caslibs pour vérifier la nouvelle entrée */
table.caslibInfo result=r_info;
print r_info;
run;
quit;
1
/* Démarrer une session CAS si ce n'est pas déjà fait */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
5
PROC CAS;
6
SESSION casauto;
7
/* Supprimer la caslib si elle existe déjà */
8
SIMPLE.dropCaslib / caslib='global_orlib';
9
10
/* Ajouter une caslib Oracle, la rendant globale et permettant l'accès aux sous-répertoires */
11
TABLE.addCaslib RESULT=r /
12
caslib="global_orlib",
13
description="Caslib Oracle globale avec sous-répertoires",
14
path="//oradb.example.com:1521/mydb",
15
datasource={
16
srctype="oracle",
17
username="myuser",
18
password="mypass"
19
},
20
globals=TRUE,
21
subdirs=TRUE;
22
23
PRINT r;
24
25
/* Lister les caslibs pour vérifier la nouvelle entrée */
26
TABLE.caslibInfo RESULT=r_info;
27
PRINT r_info;
28
RUN;
29
QUIT;
30
3 Code Block
PROC CAS / table.addCaslib
Explanation : This advanced example integrates error checking and handling logic. It first verifies the existence of the caslib and deletes it if necessary. Then, it attempts to add the caslib and displays a success or failure message based on the severity of the CAS action result, which is crucial for automated scripts or production environments. The caslib name is dynamically defined.
Copied!
/* Démarrer une session CAS si ce n'est pas déjà fait */
options cashost="cloud.example.com" casport=5570;
cas casauto;
proc cas;
session casauto;
/* Nom dynamique pour la caslib */
caslib_name = 'orlib_dynamic';
/* Vérifier si la caslib existe déjà avant de tenter de l'ajouter */
table.caslibinfo result=caslib_status / caslib=caslib_name;
if (caslib_status.caslibinfo.Name = caslib_name) then do;
print 'NOTE: Caslib ' || caslib_name || ' existe déjà. Suppression en cours...';
simple.dropCaslib / caslib=caslib_name;
print 'NOTE: Caslib ' || caslib_name || ' supprimée.';
end;
/* Ajouter la caslib Oracle avec gestion d'erreurs et affichage du statut */
table.addCaslib result=r /
caslib=caslib_name,
datasource={
srctype="oracle",
username="myuser",
password="mypass",
path="//oradb.example.com:1521/mydb"
};
if (r.severity = 0) then do;
print 'NOTE: Caslib ' || caslib_name || ' ajoutée avec succès.';
end else do;
print 'ERREUR: Échec de l''ajout de la caslib ' || caslib_name;
print r;
end;
run;
quit;
1
/* Démarrer une session CAS si ce n'est pas déjà fait */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
5
PROC CAS;
6
SESSION casauto;
7
8
/* Nom dynamique pour la caslib */
9
caslib_name = 'orlib_dynamic';
10
11
/* Vérifier si la caslib existe déjà avant de tenter de l'ajouter */
/* Ajouter la caslib Oracle avec gestion d'erreurs et affichage du statut */
21
TABLE.addCaslib RESULT=r /
22
caslib=caslib_name,
23
datasource={
24
srctype="oracle",
25
username="myuser",
26
password="mypass",
27
path="//oradb.example.com:1521/mydb"
28
};
29
30
IF (r.severity = 0) THENDO;
31
PRINT'NOTE: Caslib ' || caslib_name || ' ajoutée avec succès.';
32
ENDELSEDO;
33
PRINT'ERREUR: Échec de l''ajout de la caslib ' || caslib_name;
34
PRINT r;
35
END;
36
37
RUN;
38
QUIT;
39
4 Code Block
PROC CAS / table.addCaslib / table.loadtable Data
Explanation : This example highlights a more advanced integration with SAS Viya by using an authentication domain (`authdomain`) pre-configured on the CAS server. This centralizes credential management and improves security. The example then simulates an Oracle table and demonstrates how to load this table into CAS memory via the newly created caslib, then displays a data preview. Cleanup is included to remove created objects.
Copied!
/* Démarrer une session CAS si ce n'est pas déjà fait */
options cashost="cloud.example.com" casport=5570;
cas casauto;
proc cas;
session casauto;
/* Création de données d'exemple pour simuler une table Oracle */
data mydata;
input ID $ Name $ Value;
datalines;
101 Apple 25
102 Banana 30
103 Orange 45
;
run;
/* Supprimer la caslib si elle existe déjà */
simple.dropCaslib / caslib='orlib_ad';
/* Ajouter une caslib Oracle en utilisant un domaine d'authentification (authdomain) */
/* Note: L'authdomain 'oracle_auth' doit être préconfiguré sur le serveur CAS */
table.addCaslib result=r /
caslib="orlib_ad",
datasource={
srctype="oracle",
authdomain="oracle_auth", /* Utilise un domaine d'authentification Viya */
path="//oradb.example.com:1521/mydb"
};
print r;
/* Si la caslib a été ajoutée avec succès, tenter de charger une table */
if (r.severity = 0) then do;
/* Simuler une table existante dans Oracle en créant une table temporaire CAS */
data casuser.my_oracle_table;
set mydata;
run;
/* Charger une table depuis la caslib Oracle (simulée) vers la mémoire CAS */
table.loadtable result=lr /
caslib="orlib_ad",
path="MY_ORACLE_TABLE", /* Nom de la table dans la base de données Oracle */
casout={
name="my_cas_table",
replace=TRUE
};
print lr;
/* Afficher les 5 premières lignes de la table chargée */
table.fetch casout.my_cas_table / to=5;
end;
/* Nettoyage: Supprimer la table chargée et la caslib */
table.droptable / caslib='casuser' name='my_cas_table';
simple.dropCaslib / caslib='orlib_ad';
run;
quit;
1
/* Démarrer une session CAS si ce n'est pas déjà fait */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
5
PROC CAS;
6
SESSION casauto;
7
8
/* Création de données d'exemple pour simuler une table Oracle */
9
DATA mydata;
10
INPUT ID $ Name $ Value;
11
DATALINES;
12
101 Apple 25
13
102 Banana 30
14
103 Orange 45
15
;
16
RUN;
17
18
/* Supprimer la caslib si elle existe déjà */
19
SIMPLE.dropCaslib / caslib='orlib_ad';
20
21
/* Ajouter une caslib Oracle en utilisant un domaine d'authentification (authdomain) */
22
/* Note: L'authdomain 'oracle_auth' doit être préconfiguré sur le serveur CAS */
23
TABLE.addCaslib RESULT=r /
24
caslib="orlib_ad",
25
datasource={
26
srctype="oracle",
27
authdomain="oracle_auth", /* Utilise un domaine d'authentification Viya */
28
path="//oradb.example.com:1521/mydb"
29
};
30
PRINT r;
31
32
/* Si la caslib a été ajoutée avec succès, tenter de charger une table */
33
IF (r.severity = 0) THENDO;
34
/* Simuler une table existante dans Oracle en créant une table temporaire CAS */
35
DATA casuser.my_oracle_table;
36
SET mydata;
37
RUN;
38
39
/* Charger une table depuis la caslib Oracle (simulée) vers la mémoire CAS */
40
TABLE.loadtable RESULT=lr /
41
caslib="orlib_ad",
42
path="MY_ORACLE_TABLE", /* Nom de la table dans la base de données Oracle */
43
casout={
44
name="my_cas_table",
45
replace=TRUE
46
};
47
PRINT lr;
48
49
/* Afficher les 5 premières lignes de la table chargée */
50
TABLE.fetch casout.my_cas_table / to=5;
51
END;
52
53
/* Nettoyage: Supprimer la table chargée et la caslib */
This material is provided "as is" by We Are Cas. There are no warranties, expressed or implied, as to merchantability or fitness for a particular purpose regarding the materials or code contained herein. We Are Cas is not responsible for errors in this material as it now exists or will exist, nor does We Are Cas provide technical support for it.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.