This article demonstrates how to create metadata and mappings for reading / writing Excel files (XLSX), using Stambia DI's Excel Driver.
We are going to use the Demo database from the Stambia Tutorial.
Preparation
Create an excel file named "customers.xlsx" with the following columns.
Note: Stambia DI's Excel driver supports "XLSX" file format, not "XLS" file format.
Reversing the Excel File
Create a metadata of type "rdbms/Microsoft Excel DataServer". Name it "Excel" for instance.
Note the columnNameStyle parameter, which can be one of the following :
- PRESERVE: the column names are used as specified in the metadata
- NORMALIZE: removes the special characters from the column names, and make them UPPERCASE.
- FLAT: removes special characters from the column name, and make them lowercase.
Click on "Connect" and "Next".
On the Schema wizard, select the file name in the Catalog list, and then click Next :
You can see the sheets are listed as datastores (just like tables). Select the sheet you want to use and click Finish.
Your Excel sheet is reversed into Stambia:
Creating a mapping to write into a sheet
Create a mapping and just drag and drop the Sheet as a target.
Then drag and drop the T_CUSTOMER and T_TITLE tables from the Tutorial Metadata. Join them on the TIT_CODE column.
Important: add a "NO_LOAD" tag. The Excel mappings directly Integrate data into the target, they do not support Load features. Transformations can be applied to the source, to a transient table, or to a Stage (since version S18).
- Stambia Designer S17.x: in the mapping's "Properties", using the "Criterias" field and "+" button.
- Stambia Designer S18.x: in the target's "Properties", using the "Criterias" field and "+" button.
On the "Integration" template, make sure you enable "Append Mode".
Optionnally you can check "Truncate target table" if you want to empty the Excel sheet before integration.
Note:
- the "Do Update" property has no effect, it is currently not possible to update existing data in a sheet.
- the template has a "Order by expression" property, which can be used to sort data from the source.
Execute the mapping.
Your Excel file is filled with customer data from the database.
Note: you can right click on the Excel sheet's metadata node, and choose "Consult data".
Creating a mapping to read from the Excel file
Create a mapping with a target table that has the following structure :
Create table HOTEL_MANAGEMENT.TEST_CUSTOMER
(
CUS_ID INTEGER NOT NULL,
TIT_NAME CHAR(8) ,
CUS_LAST_NAME CHAR(32) NOT NULL,
CUS_FIRST_NAME VARCHAR(25)
)
Drag and drop the excel sheet on the mapping. Make sure the Excel fields are mapped to their corresponding columns.
You can now execute this mapping and the data will be loaded from the Excel file to the TEST_CUSTOMER table.
Comments
J'ai bien suivi le tutorial de remplissage d'un fichier Excel et je galère parce qu'au moment de l'exécution du mapping ça plante sur la première brique.
L'exécution du mapping génère 3 brique ds le processus, et la première brique est rouge donc je ne vais pas plus loin.
quand je double clik sur la première brique en rouge ça m'envoi ds le détail de cette brique. Ds le détail la première brique "Drop of load table" est jaune, et la deuxième brique est rouge.
quand je clik sur le triangle de l'erreur de la brique rouge j'ai ça " com.stambia.jdbc.driver.xls.xls.XlsException
Caused by: java.lang.UnsupportedOperationException "
vu l'étape sur laquelle le problème se produit ("Drop of load table") il semble qu'un template de Load soit utilisé dans votre Mapping.
Or, lorsqu'on alimente un fichier Excel il ne faut pas utiliser de template de Load, mais utiliser la fonctionnalité NO_LOAD du template d'intégration.
Pour cela, il faut (sur une version S18 ou ultérieure) :
- cliquer sur la table cible
- aller dans la vue "Properties"
- ajouter un nouveau "Tag" appelé "NO_LOAD" (en n'oubliant pas de cliquer sur le bouton "+" pour enregistrer le nouveau Tag)
Normalement, le Mapping devrait s'exécuter correctement et il ne devrait plus y avoir qu'une seule étape dans le Mapping au lieu des 3 que vous indiquez.
Est-il possible de créer un fichier excel uniquement a partir de sa metadata , sans que celui-ci n'existe dans le dossier de sortie ?
Merci
Nous prévoyons de permettre la génération d'un fichier sans qu'il existe, dans une future version du driver Excel.
J'ai remarqué que cela se produit dès que l'on donne un nom spécial à une feuille