Publié le :
ETL CREATION_INTERNE

Chargement en Masse (Bulkload) - Exemple SAS/ACCESS Greenplum

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par une phase de nettoyage utilisant `PROC DELETE` pour supprimer d'éventuelles tables de test (`testblkld1`, `testblkld2`) dans la bibliothèque `mydblib`. Ensuite, un jeu de données de travail (`work.testblkld`) est créé en mémoire avec des données spécifiées directement dans le script (`cards`). Enfin, les données de `work.testblkld` sont chargées en masse dans la base de données Greenplum en utilisant deux approches distinctes : la première via une instruction `CREATE TABLE AS SELECT` dans `PROC SQL` avec les options `BULKLOAD` activées directement sur la table cible, et la seconde via une étape `DATA` qui utilise également les options `BULKLOAD` lors de la déclaration de la table cible `mydblib.testblkld2`.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données source `work.testblkld` est créé directement dans le script SAS via une étape `DATA` et l'instruction `cards;` pour définir les données en ligne. Les tables cibles `mydblib.testblkld1` et `mydblib.testblkld2` sont des tables externes dans une base de données Greenplum, mais les données source sont internes au script.

1 Bloc de code
PROC DELETE
Explication :
Ces `PROC DELETE` sont utilisées pour supprimer les tables `testblkld1` et `testblkld2` de la bibliothèque `mydblib` si elles existent. Cela assure un environnement propre pour l'exécution du script et évite les erreurs de création de tables existantes. `mydblib` est une bibliothèque SAS/ACCESS connectée à une base de données externe.
Copié !
1 
2PROC DELETE
3DATA=mydblib.testblkld1;
4 
5RUN;
6PROC DELETE
7DATA=mydblib.testblkld2;
8 
9RUN;
10 
2 Bloc de code
DATA STEP Data
Explication :
Cette étape `DATA` crée un jeu de données temporaire nommé `work.testblkld`. Il contient quatre variables : `name` (caractère), `age` (numérique), `sex` (caractère) et `bdate` (numérique, formatée comme une date SAS à partir d'un format `mmddyy.`). Les données sont fournies en ligne via l'instruction `cards;`, ce qui signifie que le jeu de données est créé directement à partir des valeurs spécifiées dans le script.
Copié !
1DATA work.testblkld;
2 INPUT name $ age sex $ bdate mmddyy.;
3 CARDS;
4amy 3 f 030185
5bill 12 m 121277
6charlie 35 m 010253
7david 19 m 101469
8elinor 42 f 080845
9pearl 78 f 051222
10vera 96 f 101200
11frank 24 m 092663
12georgia 1 f 040687
13henry 46 m 053042
14joann 27 f 020461
15buddy 66 m 101432
16;
17RUN;
3 Bloc de code
PROC SQL
Explication :
Ce bloc utilise `PROC SQL` pour créer une nouvelle table `testblkld1` dans la bibliothèque `mydblib` (qui représente la connexion à Greenplum). L'option `BULKLOAD=YES` active le chargement en masse. Les options `BL_PORT`, `BL_HOST`, et `BL_PROTOCOL="gpfdist"` sont des paramètres spécifiques pour la configuration du protocole GPFDIST de Greenplum, permettant un transfert de données optimisé. `bl_format='CSV'` spécifie le format des données envoyées. La table est créée en sélectionnant toutes les colonnes du jeu de données `work.testblkld`.
Copié !
1PROC SQL;
2create TABLE mydblib.testblkld1
3 (BULKLOAD=YES
4 BL_PORT=&port
5 BL_HOST=&host
6 BL_PROTOCOL="gpfdist"
7 bl_format='CSV')
8 as select * from work.testblkld;
9QUIT;
4 Bloc de code
DATA STEP
Explication :
Ce bloc utilise une étape `DATA` pour créer la table `testblkld2` dans la bibliothèque `mydblib`. Comme dans l'exemple `PROC SQL`, les options `BULKLOAD=YES`, `BL_PORT`, `BL_HOST`, et `BL_PROTOCOL="gpfdist"` sont spécifiées directement sur l'instruction `DATA` pour la table cible, activant ainsi le chargement en masse vers Greenplum. L'instruction `set work.testblkld;` indique que les données à charger proviennent du jeu de données temporaire `work.testblkld` créé précédemment.
Copié !
1DATA mydblib.testblkld2 (
2 BULKLOAD=YES
3 BL_PORT=&port
4 BL_HOST=&host
5 BL_PROTOCOL="gpfdist"
6 );
7 SET work.testblkld;
8RUN;
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.
Informations de Copyright : SAS SAMPLE LIBRARY, NAME: bulkload.sas, TITLE: Sample Programs, PRODUCT: SAS/ACCESS to Greenplum, SYSTEM: z/OS, UNIX, WINDOWS, REF: SAS/ACCESS 9 for Relational Databases: Reference