Publicado el :
Acceso a datos, ETL CREATION_INTERNE

Conector de datos PostgreSQL

Este código también está disponible en: Deutsch English Français
En espera de validación
Este conector de datos facilita la integración de bases de datos PostgreSQL con CAS, ofreciendo capacidades para cargar y descargar datos. Admite varias opciones de conexión, incluida la autenticación con Single Sign-on para Microsoft Azure. El rendimiento de las transferencias de grandes volúmenes de datos se mejora gracias a la funcionalidad de carga y descarga masiva (Bulk Load/Unload) utilizando la API COPY, disponible a partir de la versión 2025.03. Se aplican consideraciones específicas para la gestión de tipos de datos VARCHAR y la precisión de los números enteros, así como para el formato de los valores de fecha y hora durante las operaciones de carga masiva. La distinción entre mayúsculas y minúsculas también es un punto crucial al especificar los identificadores y nombres de tablas.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) para las tablas CAS o se conectan a una base de datos PostgreSQL existente (con identificadores y nombres de servidor/base de datos a reemplazar por el usuario).

1 Bloque de código
CASLIB statement
Explicación :
Este ejemplo muestra la sintaxis mínima para establecer una conexión a una base de datos PostgreSQL desde CAS utilizando la instrucción CASLIB. El parámetro 'srctype' se establece en 'postgres' y se proporcionan las informaciones de conexión esenciales como el servidor, el nombre de usuario, la contraseña, la base de datos y el esquema. El comando 'proc casutil; list caslib=PostgreSQLcaslib;' permite verificar que la conexión está establecida y visualizar los archivos (tablas) accesibles a través de esta caslib.
¡Copiado!
1/* Remplacez 'PGserver', 'user1', 'myPwd', 'PGdatabase' et 'myschema' par vos propres informations de connexion. */
2caslib 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 */
11PROC CASUTIL;
12 list caslib=PostgreSQLcaslib;
13QUIT;
2 Bloque de código
PROC CASUTIL
Explicación :
Este ejemplo utiliza el procedimiento PROC CASUTIL para cargar una tabla específica ('myPGdata') de una base de datos PostgreSQL (accesible a través de 'PostgreSQLcaslib') en SAS Cloud Analytic Services. La tabla CAS resultante se denomina 'class_from_PostgreSQLcaslib' y se almacena en la caslib 'casuser'. También ilustra cómo se pueden sustituir credenciales específicas a nivel de la operación de carga a través de la opción 'dataSourceOptions', anulando así las definidas durante la creación de la caslib.
¡Copiado!
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 
4PROC 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. */
7 load casdata="myPGdata" incaslib="PostgreSQLcaslib" outcaslib="casuser"
8 casout="class_from_PostgreSQLcaslib" replace
9 dataSourceOptions=(username='user5', password='myNewPwd');
10 
11 /* Lister les fichiers dans la caslib 'casuser' pour vérifier que la table a été chargée. */
12 list files incaslib="casuser";
13 
14 /* Afficher les informations sur la structure de la table chargée. */
15 contents casdata="class_from_PostgreSQLcaslib" incaslib="casuser";
16QUIT;
3 Bloque de código
DATA STEP / PROC CASUTIL Data
Explicación :
Este ejemplo demuestra la carga masiva (Bulk Load) de una tabla CAS que contiene valores de fecha y hora a PostgreSQL. Primero se crea una tabla CAS temporal ('timedata') con valores de tiempo formateados específicamente ('time16.6'). Luego, se utiliza el procedimiento PROC CASUTIL con la opción 'bulkload=true' para una transferencia optimizada. La opción 'dbtype="d_timefmt='time'"' es crucial para indicar a PostgreSQL cómo interpretar la columna de tiempo, garantizando así que los valores se inserten correctamente sin truncamiento ni error de conversión.
¡Copiado!
1/* Création d'une table CAS avec des données de date/heure */
2DATA casuser.timedata;
3 INPUT id d_timefmt : time16.6;
4 FORMAT d_timefmt time16.6;
5 DATALINES;
61 10:30:00.000000
72 14:45:30.123456
83 08:00:00.000000
9;
10RUN;
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 
15PROC 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. */
18 save casdata="timedata" incaslib="casuser"
19 outcaslib="PostgreSQLcaslib" casout="PG_time_data" replace
20 options={bulkload=true, dbtype="d_timefmt='time'"};
21 
22 /* Vérifiez la nouvelle table dans PostgreSQLcaslib. */
23 list files incaslib="PostgreSQLcaslib";
24QUIT;
4 Bloque de código
CASLIB statement
Explicación :
Este ejemplo ilustra la conexión a una instancia de PostgreSQL alojada en Microsoft Azure utilizando Single Sign-on (SSO) a través de Microsoft Entra ID. Es imperativo NO especificar las opciones 'username=' o 'password=' directamente en la declaración CASLIB, ya que esto deshabilitaría el SSO. La opción 'srctype' sigue siendo 'postgres'. Se proporcionan el servidor, la base de datos y el esquema, y la autenticación es gestionada por la configuración SSO de la plataforma SAS Viya. La verificación a través de 'proc casutil' permite confirmar que la conexión SSO está operativa y que los recursos son accesibles.
¡Copiado!
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. */
3caslib pgres_azure datasource=(srctype='postgres',
4 server="mydataenvironment.postgres.database.azure.com",
5 database=mypgdata,
6 schema=myschema);
7 
8/* Pour vérifier la connexion et lister les tables si la caslib est active */
9PROC CASUTIL;
10 list caslib=pgres_azure;
11QUIT;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.