Publié le :
Accès aux données CREATION_INTERNE

Connecteur de données Informix

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le connecteur de données Informix facilite l'intégration des données stockées dans une base de données Informix avec SAS© Viya. Il offre des options pour spécifier l'hôte, le port, le nom de la base de données, l'identifiant utilisateur, le mot de passe, ainsi que des options spécifiques à Informix comme le serveur de base de données (SERVER) et la localisation (DBLOCALE). Il permet le chargement de tables Informix vers des tables CAS et l'écriture de tables CAS vers Informix, supportant ainsi les opérations ETL et l'analyse distribuée via CAS.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP, puis chargent/enregistrent ces données via le connecteur Informix.

1 Bloc de code
PROC CASUTIL / LIBNAME Data
Explication :
Cet exemple montre comment établir une connexion basique à une base de données Informix en utilisant l'instruction LIBNAME. Il définit les paramètres essentiels de connexion tels que le serveur, l'hôte, le port, la base de données, l'utilisateur et le mot de passe. Il crée ensuite une petite table SAS en mémoire, puis charge cette table dans une table CAS. La partie commentée montre comment charger des données directement depuis Informix vers CAS. Les options doivent être adaptées à votre environnement Informix.
Copié !
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 Bloc de code
PROC CAS / PROC CASUTIL Data
Explication :
Cet exemple montre la création d'une caslib pour Informix, en spécifiant des options courantes comme 'DBLOCALE'. Il utilise ensuite PROC CASUTIL pour sauvegarder une table SAS (sashelp.class) dans une nouvelle table Informix. Enfin, il charge la table nouvellement créée depuis Informix vers CAS pour vérification et imprime les premières observations. Cela illustre un flux de travail typique de chargement de données SAS vers Informix pour une utilisation ultérieure.
Copié !
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 Bloc de code
PROC CAS / PROC CASUTIL Data
Explication :
Cet exemple illustre un scénario avancé où des options de filtrage (WHERE) et de sélection de colonnes (DROP) sont appliquées directement lors du chargement de données depuis Informix vers CAS. Cela permet de charger uniquement les données pertinentes, réduisant ainsi la consommation de ressources et le temps de traitement. La table Informix 'my_large_dataset' est simulée ici par une création de table CAS pour des raisons d'autonomie de l'exemple.
Copié !
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 Bloc de code
PROC CAS / PROC CASUTIL Data
Explication :
Cet exemple met en évidence l'utilisation d'options avancées pour la performance (NTHREADS, DBCONNECT_MAX_DATA_BYTES, PRESERVE_CURSORS) et la gestion des erreurs (_ERROR_FILE_, _ERROR_ACTION_) lors de l'interaction avec Informix via CAS. Il simule un scénario où des données avec des erreurs potentielles sont enregistrées, montrant comment le connecteur peut être configuré pour gérer ces situations plutôt que d'interrompre le processus. Le fichier d'erreur spécifié permettrait d'auditer les lignes ignorées.
Copié !
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;
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.

Documentation liée : Accès aux données

Sujet / Mot-cléLien vers la ressource
DOC FedSQL fr/sampleCode/FEDSQLD493
DOC Définitions des Moteurs SAS fr/sampleCode/DEFINI88E2
DOC Bibliothèques SAS par Défaut fr/sampleCode/BIBLIOB755
DOC Fonctionnement des Moteurs avec les Fichiers fr/sampleCode/FONCTI81D4
DOC Caractéristiques des moteurs SAS fr/sampleCode/CARACTABC0
DOC Définitions des Moteurs SAS fr/sampleCode/DEFINI6352