Ce connecteur de données facilite l'intégration des bases de données PostgreSQL avec CAS, offrant des capacités pour charger et décharger des données. Il prend en charge diverses options de connexion, y compris l'authentification avec Single Sign-on pour Microsoft Azure. La performance des transferts de gros volumes de données est améliorée grâce à la fonctionnalité de chargement et déchargement en masse (Bulk Load/Unload) utilisant l'API COPY, disponible à partir de la version 2025.03. Des considérations spécifiques s'appliquent pour la gestion des types de données VARCHAR et la précision des nombres entiers, ainsi que pour le formatage des valeurs de date et d'heure lors des opérations de chargement en masse. La sensibilité à la casse est également un point crucial lors de la spécification des identifiants et noms de tables.
Analyse des données
Type : CREATION_INTERNE
Les exemples utilisent des données générées (datalines) pour les tables CAS ou se connectent à une base de données PostgreSQL existante (avec des identifiants et des noms de serveur/base de données à remplacer par l'utilisateur).
1 Bloc de code
CASLIB statement
Explication : Cet exemple montre la syntaxe minimale pour établir une connexion à une base de données PostgreSQL depuis CAS en utilisant l'instruction CASLIB. Le paramètre 'srctype' est défini sur 'postgres' et les informations de connexion essentielles telles que le serveur, le nom d'utilisateur, le mot de passe, la base de données et le schéma sont fournies. La commande 'proc casutil; list caslib=PostgreSQLcaslib;' permet de vérifier que la connexion est établie et de visualiser les fichiers (tables) accessibles via cette caslib.
Copié !
/* Remplacez 'PGserver', 'user1', 'myPwd', 'PGdatabase' et 'myschema' par vos propres informations de connexion. */
caslib PostgreSQLcaslib desc='PostgreSQL Caslib'
dataSource=(srctype='postgres',
server='PGserver',
username='user1',
password='myPwd',
database='PGdatabase',
schema='myschema');
/* Pour vérifier la connexion et lister les tables si la caslib est active */
proc casutil;
list caslib=PostgreSQLcaslib;
quit;
1
/* Remplacez 'PGserver', 'user1', 'myPwd', 'PGdatabase' et 'myschema' par vos propres informations de connexion. */
2
caslib PostgreSQLcaslib desc='PostgreSQL Caslib'
3
dataSource=(srctype='postgres',
4
server='PGserver',
5
username='user1',
6
password='myPwd',
7
database='PGdatabase',
8
schema='myschema');
9
10
/* Pour vérifier la connexion et lister les tables si la caslib est active */
11
PROC CASUTIL;
12
list caslib=PostgreSQLcaslib;
13
QUIT;
2 Bloc de code
PROC CASUTIL
Explication : Cet exemple utilise la procédure PROC CASUTIL pour charger une table spécifique ('myPGdata') d'une base de données PostgreSQL (accessible via 'PostgreSQLcaslib') dans SAS Cloud Analytic Services. La table CAS résultante est nommée 'class_from_PostgreSQLcaslib' et stockée dans la caslib 'casuser'. Il illustre également comment des informations d'identification spécifiques peuvent être substituées au niveau de l'opération de chargement via l'option 'dataSourceOptions', écrasant ainsi celles définies lors de la création de la caslib.
Copié !
/* Créez d'abord la caslib PostgreSQL si ce n'est pas déjà fait (voir Exemple 1). */
/* Assurez-vous que la table 'myPGdata' existe dans votre base de données PostgreSQL. */
proc casutil;
/* Charger la table 'myPGdata' de la caslib 'PostgreSQLcaslib' dans une nouvelle table CAS 'class_from_PostgreSQLcaslib' dans la caslib 'casuser'. */
/* Les identifiants spécifiés dans dataSourceOptions écraseront ceux définis dans la CASLIB. */
load casdata="myPGdata" incaslib="PostgreSQLcaslib" outcaslib="casuser"
casout="class_from_PostgreSQLcaslib" replace
dataSourceOptions=(username='user5', password='myNewPwd');
/* Lister les fichiers dans la caslib 'casuser' pour vérifier que la table a été chargée. */
list files incaslib="casuser";
/* Afficher les informations sur la structure de la table chargée. */
contents casdata="class_from_PostgreSQLcaslib" incaslib="casuser";
quit;
1
/* Créez d'abord la caslib PostgreSQL si ce n'est pas déjà fait (voir Exemple 1). */
2
/* Assurez-vous que la table 'myPGdata' existe dans votre base de données PostgreSQL. */
3
4
PROC CASUTIL;
5
/* Charger la table 'myPGdata' de la caslib 'PostgreSQLcaslib' dans une nouvelle table CAS 'class_from_PostgreSQLcaslib' dans la caslib 'casuser'. */
6
/* Les identifiants spécifiés dans dataSourceOptions écraseront ceux définis dans la CASLIB. */
Explication : Cet exemple démontre le chargement en masse (Bulk Load) d'une table CAS contenant des valeurs de date et d'heure vers PostgreSQL. Une table CAS temporaire ('timedata') est d'abord créée avec des valeurs de temps formatées spécifiquement ('time16.6'). Ensuite, la procédure PROC CASUTIL est utilisée avec l'option 'bulkload=true' pour un transfert optimisé. L'option 'dbtype="d_timefmt='time'"' est cruciale pour indiquer à PostgreSQL comment interpréter la colonne de temps, garantissant ainsi que les valeurs sont correctement insérées sans troncature ni erreur de conversion.
Copié !
/* Création d'une table CAS avec des données de date/heure */
data casuser.timedata;
input id d_timefmt : time16.6;
format d_timefmt time16.6;
datalines;
1 10:30:00.000000
2 14:45:30.123456
3 08:00:00.000000
;
run;
/* Création de la caslib PostgreSQL si ce n'est pas déjà fait (voir Exemple 1). */
/* Assurez-vous d'avoir une caslib PostgreSQL configurée et active, par exemple 'PostgreSQLcaslib'. */
proc casutil;
/* Enregistrez la table CAS 'timedata' vers PostgreSQL en utilisant le chargement en masse. */
/* Le paramètre dbtype assure le formatage correct de la colonne de temps. */
save casdata="timedata" incaslib="casuser"
outcaslib="PostgreSQLcaslib" casout="PG_time_data" replace
options={bulkload=true, dbtype="d_timefmt='time'"};
/* Vérifiez la nouvelle table dans PostgreSQLcaslib. */
list files incaslib="PostgreSQLcaslib";
quit;
1
/* Création d'une table CAS avec des données de date/heure */
2
DATA casuser.timedata;
3
INPUT id d_timefmt : time16.6;
4
FORMAT d_timefmt time16.6;
5
DATALINES;
6
110:30:00.000000
7
214:45:30.123456
8
308:00:00.000000
9
;
10
RUN;
11
12
/* Création de la caslib PostgreSQL si ce n'est pas déjà fait (voir Exemple 1). */
13
/* Assurez-vous d'avoir une caslib PostgreSQL configurée et active, par exemple 'PostgreSQLcaslib'. */
14
15
PROC CASUTIL;
16
/* Enregistrez la table CAS 'timedata' vers PostgreSQL en utilisant le chargement en masse. */
17
/* Le paramètre dbtype assure le formatage correct de la colonne de temps. */
/* Vérifiez la nouvelle table dans PostgreSQLcaslib. */
23
list files incaslib="PostgreSQLcaslib";
24
QUIT;
4 Bloc de code
CASLIB statement
Explication : Cet exemple illustre la connexion à une instance PostgreSQL hébergée sur Microsoft Azure en utilisant le Single Sign-on (SSO) via Microsoft Entra ID. Il est impératif de ne PAS spécifier les options 'username=' ou 'password=' directement dans la déclaration CASLIB, car cela désactiverait le SSO. L'option 'srctype' est toujours 'postgres'. Le serveur, la base de données et le schéma sont fournis, et l'authentification est gérée par la configuration SSO de la plateforme SAS Viya. La vérification via 'proc casutil' permet de confirmer que la connexion SSO est opérationnelle et que les ressources sont accessibles.
Copié !
/* Remplacez 'mydataenvironment.postgres.database.azure.com', 'mypgdata' et 'myschema' par vos propres informations. */
/* AUCUN 'username=' ou 'password=' n'est spécifié pour activer le SSO. */
caslib pgres_azure datasource=(srctype='postgres',
server="mydataenvironment.postgres.database.azure.com",
database=mypgdata,
schema=myschema);
/* Pour vérifier la connexion et lister les tables si la caslib est active */
proc casutil;
list caslib=pgres_azure;
quit;
1
/* Remplacez 'mydataenvironment.postgres.database.azure.com', 'mypgdata' et 'myschema' par vos propres informations. */
2
/* AUCUN 'username=' ou 'password=' n'est spécifié pour activer le SSO. */
/* Pour vérifier la connexion et lister les tables si la caslib est active */
9
PROC CASUTIL;
10
list caslib=pgres_azure;
11
QUIT;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Vérifiez toujours la précision de vos entiers lors du passage vers CAS. Une inadéquation de type peut entraîner des arrondis silencieux sur vos clés primaires, compromettant l'intégrité de vos futures jointures. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.