Publicado el :
Acceso a datos CREATION_INTERNE

Conector de datos de Informix

Este código también está disponible en: Deutsch English Français
En espera de validación
El conector de datos de Informix facilita la integración de los datos almacenados en una base de datos Informix con SAS© Viya. Ofrece opciones para especificar el host, el puerto, el nombre de la base de datos, el ID de usuario, la contraseña, así como opciones específicas de Informix como el servidor de base de datos (SERVER) y la localización (DBLOCALE). Permite la carga de tablas de Informix a tablas CAS y la escritura de tablas CAS a Informix, lo que soporta las operaciones ETL y el análisis distribuido a través de CAS.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP, y luego cargan/guardan estos datos a través del conector de Informix.

1 Bloque de código
PROC CASUTIL / LIBNAME Data
Explicación :
Este ejemplo muestra cómo establecer una conexión básica a una base de datos Informix utilizando la instrucción LIBNAME. Define los parámetros de conexión esenciales como el servidor, el host, el puerto, la base de datos, el usuario y la contraseña. Luego crea una pequeña tabla SAS en memoria y la carga en una tabla CAS. La parte comentada muestra cómo cargar datos directamente desde Informix a CAS. Las opciones deben adaptarse a su entorno Informix.
¡Copiado!
1/* Établit une connexion LIBNAME à la base de données Informix */
2/* Remplacez les valeurs d'hôte, de port, de base de données, d'utilisateur et de mot de passe par les vôtres */
3 
4LIBNAME myinfor INFORMIX
5 SERVER="your_informix_server_name" /* Nom du serveur Informix */
6 HOST="your_informix_host" /* Adresse IP ou nom d'hôte d'Informix */
7 PORT=9088 /* Port par défaut d'Informix */
8 DATABASE="your_informix_db" /* Nom de la base de données Informix */
9 USER="your_username" /* Nom d'utilisateur Informix */
10 PASSWORD="your_password" /* Mot de passe Informix */
11 SCHEMA="your_schema"
12 DBCLIENT_MAX_DATA_BYTES=104857600; /* Option pour la taille maximale des données */
13 
14/* Crée une table SAS en mémoire CAS pour l'exemple */
15DATA casuser.sample_data;
16 INPUT ID Name $ Value;
17 DATALINES;
181 John 100
192 Jane 150
203 Mike 200
21;
22RUN;
23 
24/* Charge la table SAS 'sample_data' dans une table CAS 'informix_table' */
25PROC CASUTIL;
26 LOAD DATA=casuser.sample_data OUTCASLIB=mycaslib CASOUT="informix_table" REPLACE;
27QUIT;
28 
29/* Pour lire depuis Informix vers CAS (si 'my_informix_data' existe dans Informix) */
30/* PROC CASUTIL; */
31/* LOAD DATA=myinfor.my_informix_data OUTCASLIB=mycaslib CASOUT="loaded_informix_data" REPLACE; */
32/* QUIT; */
33 
34LIBNAME myinfor CLEAR;
2 Bloque de código
PROC CAS / PROC CASUTIL Data
Explicación :
Este ejemplo muestra la creación de una caslib para Informix, especificando opciones comunes como 'DBLOCALE'. Luego usa PROC CASUTIL para guardar una tabla SAS (sashelp.class) en una nueva tabla Informix. Finalmente, carga la tabla recién creada desde Informix a CAS para verificación e imprime las primeras observaciones. Esto ilustra un flujo de trabajo típico de carga de datos SAS a Informix para su uso posterior.
¡Copiado!
1/* Connexion au serveur CAS */
2CAS;
3 
4/* Établit une caslib pour Informix avec des options supplémentaires */
5/* Remplacez les valeurs d'hôte, de port, de base de données, d'utilisateur et de mot de passe par les vôtres */
6 
7CASLIB myinformix_lib datasource=(
8 driver="informix",
9 server="your_informix_server_name",
10 host="your_informix_host",
11 port=9088,
12 database="your_informix_db",
13 username="your_username",
14 password="your_password",
15 schema="your_schema",
16 dblocale="en_US.57372"
17) incaslib; /* incaslib rend la caslib disponible immédiatement */
18 
19/* Crée une table SAS temporaire qui sera chargée dans Informix via CAS */
20DATA _null_;
21 SET sashelp.class;
22 file _webout;
23 OUTPUT;
24RUN;
25 
26DATA casuser.students;
27 SET sashelp.class;
28RUN;
29 
30/* Sauvegarde la table CAS 'students' dans Informix */
31PROC CASUTIL;
32 SAVE DATA=casuser.students
33 CASLIB=myinformix_lib
34 CASOUT="informix_students_table" REPLACE;
35QUIT;
36 
37/* Vérifie que la table a été créée dans Informix et peut être chargée */
38PROC CASUTIL;
39 LOAD DATA=myinformix_lib.informix_students_table
40 CASOUT="loaded_informix_students" REPLACE;
41QUIT;
42 
43PROC PRINT DATA=loaded_informix_students (obs=5);
44RUN;
45 
46CASLIB myinformix_lib_informix DROP;
47CAS TERMINATE;
3 Bloque de código
PROC CAS / PROC CASUTIL Data
Explicación :
Este ejemplo ilustra un escenario avanzado donde las opciones de filtrado (WHERE) y selección de columnas (DROP) se aplican directamente al cargar datos de Informix a CAS. Esto permite cargar solo los datos relevantes, reduciendo así el consumo de recursos y el tiempo de procesamiento. La tabla Informix 'my_large_dataset' se simula aquí mediante la creación de una tabla CAS por razones de autonomía del ejemplo.
¡Copiado!
1/* Connexion au serveur CAS */
2CAS;
3 
4/* Établit une caslib pour Informix (assurez-vous que la connexion est valide) */
5/* Pour cet exemple, nous supposons qu'une table 'my_large_dataset' existe dans Informix */
6/* Remplacez les valeurs d'hôte, de port, de base de données, d'utilisateur et de mot de passe par les vôtres */
7 
8CASLIB myinformix_adv_lib datasource=(
9 driver="informix",
10 server="your_informix_server_name",
11 host="your_informix_host",
12 port=9088,
13 database="your_informix_db",
14 username="your_username",
15 password="your_password",
16 schema="your_schema"
17) incaslib;
18 
19/* Simulation d'une table Informix pour l'exemple */
20/* Normalement, cette table existerait déjà dans votre base de données Informix */
21/* Ici, nous la créons directement dans CAS pour simuler l'accès à une table Informix existante */
22DATA casuser.my_large_dataset;
23 LENGTH id 8 product $20. quantity 8 price 8;
24 DO id = 1 to 1000;
25 product = 'Produit_' || put(ceil(ranuni(0)*10), 2.);
26 quantity = ceil(ranuni(0)*100);
27 price = round(ranuni(0)*1000, 0.01);
28 OUTPUT;
29 END;
30RUN;
31 
32/* Charger sélectivement des données d'Informix avec un filtre et une sélection de colonnes */
33/* Supposons que 'my_large_dataset' est le nom de la table dans Informix */
34PROC CASUTIL;
35 LOAD DATA=myinformix_adv_lib.my_large_dataset(where=(quantity > 50) drop=(price))
36 CASOUT="filtered_informix_data" REPLACE;
37QUIT;
38 
39PROC PRINT DATA=filtered_informix_data (obs=10);
40RUN;
41 
42CASLIB myinformix_adv_lib DROP;
43CAS TERMINATE;
4 Bloque de código
PROC CAS / PROC CASUTIL Data
Explicación :
Este ejemplo destaca el uso de opciones avanzadas para el rendimiento (NTHREADS, DBCONNECT_MAX_DATA_BYTES, PRESERVE_CURSORS) y la gestión de errores (_ERROR_FILE_, _ERROR_ACTION_) al interactuar con Informix a través de CAS. Simula un escenario en el que se registran datos con errores potenciales, mostrando cómo se puede configurar el conector para manejar estas situaciones en lugar de interrumpir el proceso. El archivo de error especificado permitiría auditar las líneas ignoradas.
¡Copiado!
1/* Connexion au serveur CAS */
2CAS;
3 
4/* Établit une caslib pour Informix avec des options de performance et de gestion d'erreur */
5/* Remplacez les valeurs d'hôte, de port, de base de données, d'utilisateur et de mot de passe par les vôtres */
6 
7CASLIB myinformix_perf_lib datasource=(
8 driver="informix",
9 server="your_informix_server_name",
10 host="your_informix_host",
11 port=9088,
12 database="your_informix_db",
13 username="your_username",
14 password="your_password",
15 schema="your_schema",
16 /* Options de performance */
17 NTHREADS=4, /* Nombre de threads à utiliser pour le transfert de données */
18 DBCONNECT_MAX_DATA_BYTES=104857600, /* Taille maximale des blocs de données */
19 PRESERVE_CURSORS=TRUE, /* Aide à la performance pour des requêtes répétées */
20 /* Options de gestion d'erreur (ex: ignore les lignes erronées, nécessite un fichier de log d'erreurs) */
21 _ERROR_FILE_="/tmp/informix_errors.log",
22 _ERROR_ACTION_="CONTINUE"
23) incaslib;
24 
25/* Crée une table CAS avec des données qui pourraient potentiellement causer des erreurs (simulé) */
26DATA casuser.data_with_potential_errors;
27 INPUT ID Name $ Age;
28 DATALINES;
291 Alice 25
302 Bob 30
313 Charlie . /* Simulation d'une donnée manquante/potentiellement erronée */
324 David 40
33;
34RUN;
35 
36/* Sauvegarde la table CAS dans Informix, avec gestion d'erreurs */
37PROC CASUTIL;
38 SAVE DATA=casuser.data_with_potential_errors
39 CASLIB=myinformix_perf_lib
40 CASOUT="informix_error_test" REPLACE;
41QUIT;
42 
43/* Tente de charger la table pour vérifier */
44PROC CASUTIL;
45 LOAD DATA=myinformix_perf_lib.informix_error_test
46 CASOUT="loaded_error_test" REPLACE;
47QUIT;
48 
49PROC PRINT DATA=loaded_error_test;
50RUN;
51 
52/* Nettoyage */
53CASLIB myinformix_perf_lib DROP;
54CAS TERMINATE;
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.