Altova MapForce 2024 Enterprise Edition

Quand vous mappez des données vers une table de données, cette table aura le bouton Actions de base de données à côté de celle-ci. La capture d’écran ci-dessous affiche que nous mappons les données XML de deux tables de base de données, et chaque table a son propre bouton Actions de base de données (encerlcé en rouge ci-dessous).

MF_DBTableActions01

Cliquez sur le bouton Actions de base de données ouvre le dialogue Actions de table de base de données (voir ci-dessous), dans lequel vous pouvez configurer divers paramètres, actions et options. Le dialogue Actions de Table de base de données comprend cinq parties :

 

1.Actions à être réalisées avant toute action définie pour chaque enregistrement

2.Actions à définir pour chaque enregistrement

3.Paramètres de transaction de la base de données

4.Suivi et paramètres de journalisation d’erreur

5.Paramètres de transfert bulk

 

Pour en savoir plus sur chaque partie du dialogue, voir les sous-sections ci-dessous.

mf_db_actions_settings

 

Instruction SQL pour une exécution avant le premier enregistrement

Dans cette section, vous pouvez définir des instructions SQL qui seront exécutées avant toute action définie dans la section Actions à exécuter pour chaque enregistrement. Les options suivantes sont disponibles :

 

L’option Aucun signifie qu’aucune action n’est réalisée. Il s'agit là du réglage par défaut.

L’option DELETE tous les enregistrements supprimera tous les enregistrements de la table sélectionnée. De plus, vous pouvez choisir la suppression de tous les enregistrements dans les tables enfant (la case à cocher aussi supprimer tous les enregistrements dans toutes les tables enfant).

Le paramètre SQL Personnalisé vous permet d’écrire une instruction SQL personnalisée qui affectera toute la table. Par exemple, vous pouvez ajouter une instruction qui fournira une information de suivi sur le mappage. Veuillez noter que la prise en charge pour plusieurs instructions SQL dans une requête dépend de la base de données, de la méthode de connexion et du pilote utilisé.

 

Pour plus d'information à propos de ces actions, voir Actions de table BD. Scénarios.

 

Actions à exécuter pour chaque enregistrement

La section Actions à exécuter pour chaque enregistrement vous permet de définir les actions de base de données qui seront réalisées dans votre base de données. Pour gérer les actions de table, cliquer sur les touches Apposer Action, Insérer Action, ou Supprimer Action. De multiples actions peuvent être définies, le cas échéant. Toute action de table définie après les actions Insérer tout ou Insérer Rest ne sera jamais exécutée car aucune condition de colonne n'existe pour les actions d'insertion. Si vous avez ajouté une action de table après l’action Insérer Tout ou Insérer Rest, un dialogue vous informera que l’action de table suivante sera supprimée.

 

Pour chaque action, toutes les données d’entrée sont comparées aux données de la base de données. Si toutes les comparaisons sont true, une action spécifique sera réalisée. Les actions de table définies sont traitées de gauche à droite. Par exemple, si vous avez défini une condition Update If, puis une condition Insérer Rest, l’action Update If sera traitée d’abord. Si la condition Update If n’est pas satisfaite, alors l’action Insert Rest sera réalisée. Si aucune des conditions n’est satisfaite, aucune action n’aura lieu.

 

Mapped value/DB-generated/max() + 1

Quand vous définissez l’action Insert All ou Insert Rest, vous pouvez décider comment les valeurs doivent être générées. Les options suivantes sont disponibles : mapped value, DB-generated, et max() + 1. L’option valeur mappée signifie que les données source seront mappées vers le champ de base de données directement. L’option valeur mappée est le paramètre standard pour les champs de base de données.

 

Quand « auto-increment » est défini pour la/les clé/s primaire/s dans votre base de données, vous pouvez choisir entre une valeur mappée et la valeur générée par BD. Quand il n’y a pas d’auto-increment, vous pouvez choisir entre une valeur mappée et l’option max() + 1. L’option max() + 1 génère les valeurs numériques basées sur les valeurs existantes dans la base de données. Par exemple, si la table comporte trois enregistrements, avec des clés primaires 1, 2 et 3, alors la clé primaire d’un nouvel enregistrement sera 4.

 

NULL equal

Lorsque vous sélectionnez la case à cocher NULL equal à côté de l’enregistrement (capture d’écran ci-dessous), les valeurs null dans l’enregistrement source et les valeurs null dans l’enregistrement cible seront considérées égales. Ne pas sélectionner cette case à cocher peut entrîner des résultats incorrects. Vous pouvez utiliser la case à cocher NULL equal si toutes les conditions suivantes sont true :

 

Le champ pour lequel vous voulez permettre l’option NULL equal est nullable. Ceci signifie que ce champ a été configuré de telle manière qu’il peut accepter les valeurs NULL.

Une ou plusieurs des actions suivantes a été configurée : Ignore If, Update If, ou Delete If.

Une ou plusieurs actions de table (par ex., Ignore If) ont au moins une condition equal ou equal (ignorer la casse) (voir Champ Author dans la capture d’écran ci-dessous).

mf_dbnull_enabling

L’image ci-dessus affiche que deux actions ont été définies pour la table Authors : Ignore If et Insert Rest. La condition Ignore If comparera les valeurs Author et Website dans la source avec les valeurs Author et Website dans la base de données. Si ces valeurs sont les mêmes, ces enregistrements seront ignorés dans la base de données, et les enregistrements de la source qui n’ont pas de contreparties dans la base de données seront simplement insérés dans la base de données.

 

L’option NULL equal a été activée pour la colonne Website. Par exemple, un des enregistrements de Author a une nouvelle valeur dans le champ Website dans la source et la cible. Avec l’option NULL equal activée, cet enregistrement Author sera ignoré et ne sera pas inséré dans la base de données. Toutefois, si la case à cocher NULL equal n’est pas sélectionnée, l’enregistrement ne satisfera plus la condition Ignore If et sera inséré dans la base de données.

 

Tables enfant

Si une relation foreign-key existe dans votre base de données, vous serez à même de voir les noms de tables enfant dans le dialogue Actions de table de base de données (Books dans le dialogue des Actions de Table de base de données ci-dessus). Les options suivantes seront disponibles :

 

Supprimer des données dans les tables enfants : Cette option peut être particulièrement utile quand vous configurez, par exemple, l’action Update If pour une table parent et l’action Insert All pour sa table enfant. La condition Update If mettra à jour uniquement les enregistrements parent qui existent dans la source et la base de données. La condition Update If vous préviendra d’avoir des enregistrements doubles dans la table parent.

 

L’option Supprimer données des tables enfant supprimera uniquement ces enregistrements Book dont les enregistrements parent (Authors) satisfont la condition Update If condition (c’est-à-dire existent dans la source et la base de données). Supprimer des enregistrements enfant vous empêchera d’avoir des doublons ou des données orphelines dans la table enfant. L’action Insert All définie pour la table enfant insérera seuls ces enregistrements enfant source dont les enregistrements parent satisfont la condition Update If .

 

Ignorer les données enfant d'entrée : Cette option est utile quand vous voulez mettre à jour uniquement une table parent et laisser les enregistrements enfant inchangés.

 

Gestion de la transaction de base de données

La section Database transaction handling vous permet de restaurer une opération ou une séquence d’opérations (transaction) en cas d’erreur (par ex., valeurs NULL insérées dans les colonnes non-NULL). Pour permettre les transactions au niveau de l’action de table, sélectionnez la case à cocher Utiliser transactions dans le dialogue Actions de Table de base de données (capture d’écran ci-dessous).

mf_dbtran_01

Les options de gestion de la transation sont disponibles :

 

Restaurer transaction du haut et arrêter : Puisque la gestion de la transaction peut être configurée aux différents niveaux de la hiérarchie de la base de données, la transaction du haut peut se référer à (i) la transaction au niveau du composant de base de données si vous avez activé les transactions à ce niveau ou (ii) la transaction définie dans la table du niveau supérieur. Les changements effectués dans la base de données seront restaurés pour chaque niveau de la hiérarchie jusqu’au niveau supérieur, puis l’exécution s’arrêtera.

Annuler cette transaction et continuer : Comme ci-dessus, mais le mappage continue d’être exécuté après la restauration (par ex., pour traiter un autre composant cible si un tel composant existe).

Restaurer transaction actuelle et arrêter : Quand une erreur associée à la base de données apparaît, seuls les changements dans la transaction actuelle seront restaurés, et le traitement d’enregistrements ultérieurs s’arrêtera. Les changements rendus avant en dehors de la transaction actuelle seront validés.

Restaurer transaction actuelle et continuer : Comme ci-dessus, mais le mappage continue à être exécuté après l’annulation.

 

Pour plus d’information sur les différents scénarios de gestion de la transaction, voir Transaction Rollback: Scénarios.

 

Traçages

Lorsqu'un mappage écrit des données dans une base de données, vous pouvez activer le traçage et la journalisation d'erreur de la base de données. Le traçage est utile si vous souhaitez suivre tous les changements devenir dans la base de données lors de l’exécution du mappage. Les changements effectués dans la base de données sont journalisés dans un rapport de trace. S’il existe des erreurs pendant l’exécution, ces erreurs seront également journalisées.

 

Pour plus d’information sur la structure du rapport de trace, voir Fichier de traçage. Pour un exemple de traçage activé, voir le Scénario 1 dans Restauration de transaction : Scénarios.

 

Pour activer le traçage au niveau de la table, suivez les étapes ci-dessous :

 

1.Assurez-vous que le niveau de traçage au niveau du composant de base de données est défini soit comme Toujours ou Erreur.

2.Cliquez sur la touche de l’Action de table située à côté de la table dans laquelle vous souhaitez activer le traçage.

3.Sélectionnez un des niveaux de trace suivants dans la section Traces des Actions de table de la base de données (capture d’écran ci-dessous) : (i) l’option Toujours désactivé signifie qu’aucun traçage n’apparaîtra pour cette table ; (ii) l’option Limiter aux erreurs restreint le traçage uniquement aux événements d’erreur ; (iii) l’option Utiliser des paramètres de composant hérite les paramètres qui ont été définis au niveau du composant.

mf_db_trace_02

Traçage au niveau du champ de base de données

Lorsque vous activez le traçage au niveau du-composant-base de données et au niveau de la table, tous les champs (colonnes de base de données) sont inclus par défaut dans le rapport de traçage.(capture d’écran ci-dessous). Si vous voulez tracer le rapport pour inclure l’information de traçage sur les champs de base de données, cliquez sur le bouton Champs dans le dialogue Actions de table de base de données. Vous pouvez choisir de masquer des champs, les inclure dans tout cas ou les inclure uniquement dans le cas d’une erreur.

mf_db_trace_03

 

Utiliser le Transfert Bulk

L’option Utiliser le Transfert Bulk signifie que de multiples instructions INSERT sont exécutées comme requête. Le recours à cette option accélère considérablement le processus Insérer, étant donné qu'il suffit d'exécuter une seule instruction au lieu de plusieurs. L’option Utiliser le Transfert Bulk est configurée dans MapForce, mais le transfert bulk actuel de données apparaît quand le mappage est exécuté par MapForce Server.

 

Prérequis

L’option transfert bulk est prise en charge lorsque les conditions suivantes sont vraies :

 

Le langage de transformation de mappage est configuré sur Built-In.

Le mappage est exécuté par MapForce Server (autonome ou sous gestion FlowForce Server).

La licence de MapForce Server ne se limite pas à une exécution single-thread sur un appareil multi-core. C'est-à-dire que l’option Limiter à l'exécution de thread unique dans l'onglet "Gestion de serveur" d'Altova LicenseServer doit être inactive.

L’action Insérer Tout est définie pour la table de base de données pertinente.

La table dans laquelle vous voulez avoir les données bulk-insert ne doivent pas avoir de tables associées, des aperçus, ou des procédures stockées référençant la table dans le mappage.

Le pilote de base de données prend en charge l’opération bulk-insert dans les conditions WHERE.

 

Prendre en charge l’opération bulk-insert dépend du type de base de données et du pilote utilisé (table ci-dessous).

 

Type BD

ADO

ODBC

JDBC

ADO.NET

Natif

Access

Non

Non

n/a 

n/a

n/a

DB2

Non

Oui

Oui

Oui

n/a

Firebird

n/a

Oui

Oui

Non

n/a

Informix

Non

Oui

Oui

Oui

n/a

iSeries

Non

Oui

Oui

Oui

n/a

MariaDB

Non

Oui

Oui

Non

n/a

MySQL

n/a

Oui (MySQL Version 5 ou ultérieure si requis)

Oui

Non

n/a

Oracle

Non

Oui

Oui

Oui

n/a 

PostgreSQL

n/a

Oui

Oui

n/a

Oui

Progress

n/a

Oui

Oui

n/a

n/a

Serveur SQL

Oui

Oui

Oui

Oui

n/a

SQLite

n/a

n/a

n/a

n/a 

Non

Sybase

Non

Oui

Oui

n/a

n/a 

Teradata

n/a

Oui

Oui

n/a

n/a

 

Note :Pour permettre une prise en charge bulk-insert de MySQL et MariaDB via JDBC, utilisez l’option de connexion rewriteBatchedStatements=true.

 

BD échantillon

Pour tester l’opération bulk-insert, vous pouvez utiliser le Serveur SQL et la base de données AdventureWorks. Lorsque vous chargez cette base de données dans votre mappage et ouvrez le dialogue Actions de Table de base de données, vous serez à même de spécifier une taille batch (1000 enregistrements dans notre exemple). La taille batch définit le nombre d'enregistrements à insérer à la fois. Il est important de noter que l’option Utiliser le Transfert Bulk et l’option Utiliser des transactions sont exclusives mutuellement : Quand une des options est activée, l’autre option devient inactive.

mf_db_bulk_04

Étape suivante

Maintenant que l’option bulk-insert est activée, la prochaine étape est d’exécuter le mappage dans MapForce Server (autonome ou sous la Gestion de FlowForce Server).

 

© 2018-2024 Altova GmbH