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!
/* 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 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!
/* 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. */
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!
/* 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 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!
/* 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;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.