Welcome Guest! Log in
Due to some maintenance operations, stambia.org will be switched to read-only mode during the 13th November. It will be possible to read and download, but impossible to post on the forums or create new accounts. For any question please contact the support team.


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.

01excel

 

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.

02wizard

 

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 :

03schema

 

04datastore

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:

05reverse

 

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.

 

06tag

 

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.

07template

 

08map

 

Execute the mapping.

Your Excel file is filled with customer data from the database.

09result

 

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.

10mapread


You can now execute this mapping and the data will be loaded from the Excel file to the TEST_CUSTOMER table.

 

 

Comments  

# Zakaria 2018-07-19 11:44
Bonjour,
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 "
# Pierre-Olivier Mazen 2018-08-06 09:50
Bonjour,
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.
# Bennafla 2019-05-20 17:46
Bonjour

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
# Thomas BLETON 2019-05-20 17:54
Ce n'est pas possible actuellement. Le fichier doit exister au préalable (il est possible de faire une copie d'un fichier modèle, par exemple).
Nous prévoyons de permettre la génération d'un fichier sans qu'il existe, dans une future version du driver Excel.
# Yann 2019-11-12 14:20
Bonjour en suivant cette méthode pour faire le reverse d'un fichier xlsx, j'ai le message suivant : java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
J'ai remarqué que cela se produit dès que l'on donne un nom spécial à une feuille

You have no rights to post comments

Articles

Suggest a new Article!