MapForce prend en charge la fusion SQL lorsque celle-ci est l'outil approprié pour la tâche

Les grandes tables de bases de données peuvent facilement contenir un million, voire des centaines de millions de lignes de données. Les administrateurs de bases de données et les autres responsables de la maintenance de ces ensembles de données volumineux sont constamment préoccupés par le temps d'exécution des opérations ETL (extraction, transformation et chargement), des mises à jour et des autres requêtes SQL. Pour améliorer l'efficacité de ces opérations, certains, mais pas tous, les fournisseurs de bases de données ont implémenté une instruction SQL de fusion (merge) permettant d'insérer ou de mettre à jour des lignes d'une table existante en une seule opération de chargement groupé, plutôt que de nécessiter des instructions individuelles pour chaque ligne.

Altova MapForce prend en charge automatiquement la fusion SQL lorsque celle-ci est disponible pour la base de données cible. Examinons un exemple.

Insertion ou mise à jour : si..

L'image ci-dessous illustre une correspondance de données entre les éléments d'un fichier XML et une table de base de données.

Par défaut, MapForce génère une instruction SQL d'insertion pour chaque élément "Personne" dans le fichier source, ce qui est approprié pour remplir les lignes d'une nouvelle table de base de données vide. Dans d'autres situations, comme la synchronisation d'une copie de sauvegarde avec un ensemble de données en production, les instructions d'insertion ne sont pas adaptées. MapForce vous permet de spécifier facilement l'opération SQL correcte dont vous avez besoin pour chaque mappage de base de données.

Pour ouvrir la fenêtre de dialogue "Actions sur la table de base de données" de MapForce, cliquez simplement sur l'icône "Action" à côté de la table de base de données cible, qui, dans l'exemple ci-dessus, est la table "Person". La capture d'écran ci-dessous illustre la fonctionnalité de menu déroulant qui vous permet de modifier l'instruction SQL "Insert" en "Update-If".

Mise à jour : Si une condition doit être définie. Dans cette opération de mapping, nous souhaitons mettre à jour les enregistrements dans la base de données lorsque les données sources contiennent une clé primaire existante. De plus, nous voulons insérer une nouvelle ligne lorsque la clé primaire présente dans les données sources n'existe pas déjà dans la base de données.

On appelle communément cette opération une mise à jour conditionnelle : "Mettre à jour si... puis insérer le reste".

La boîte de dialogue "Actions sur la table de base de données" nous permet de définir la condition à vérifier pour la mise à jour, ainsi qu'une action alternative à exécuter lorsque cette condition est fausse. L'ensemble des actions définissant "Mettre à jour si... sinon, insérer" est affiché ici :

Mise à jour vs. Fusion en masse

Jusqu'à présent, nous n'avons même pas mentionné le fournisseur de la base de données pour la table cible de notre mappage. C'est parce que le mappage est défini de la même manière pour toutes les bases de données populaires prises en charge par MapForce. Nous n'avons pas besoin de faire quoi que ce soit de différent, que la base de données cible prenne en charge ou non les requêtes de fusion SQL.

Lorsque nous cliquons sur l'onglet "Sortie MapForce" situé sous la conception de la correspondance de données, MapForce génère un script SQL personnalisé pour le type de base de données spécifique. Ce script est ensuite affiché dans la fenêtre de sortie de MapForce pour examen. Il n'est PAS exécuté automatiquement.

Si la base de données cible prend en charge la commande SQL MERGE, vous verrez une instruction MERGE en haut du script.

Si la base de données cible ne prend pas en charge la commande SQL MERGE, vous verrez des instructions UPDATE...WHERE individuelles pour chaque ligne des données sources.

Vous pouvez exécuter le script directement dans MapForce en sélectionnant l'option "Exécuter le script SQL" dans le menu "Sortie" de MapForce, ou vous pouvez enregistrer la transformation sous forme de fichier d'exécution et l'automatiser dans MapForce Server, en spécifiant les noms des fichiers d'entrée au moment de l'exécution.

Si la base de données cible prend en charge la fonctionnalité SQL Merge, des instructions de fusion seront générées, que le mappage soit exécuté directement par MapForce ou automatisé via MapForce Server. MapForce 2017 prend en charge les instructions SQL Merge pour SQL Server 2008 et versions ultérieures, ainsi que pour Oracle, IBM DB2 et Firebird.

Les tests réalisés ici chez Altova indiquent que l'exécution en masse de la fonction SQL Merge par MapForce Server peut être jusqu'à 15 fois plus efficace que les méthodes précédentes.*

Note : Il est important de vérifier si l'astérisque () a une note de bas de page ou une référence spécifique dans le contexte original. Si oui, il faudrait la traduire et l'ajouter à la traduction. Si non, on peut simplement laisser l'astérisque sans explication

Cliquez ici pour plus d'informations sur la création de correspondances de données avec MapForce, y compris une liste complète des bases de données prises en charge en tant que sources ou cibles pour la création de ces correspondances. Vous pouvez également cliquer ici pour télécharger une version d'essai gratuite et entièrement fonctionnelle de 30 jours. Les fichiers utilisés pour la création des correspondances dans cet article de blog sont fournis en tant qu'exemples MapForce, et des instructions détaillées pour reproduire ces correspondances se trouvent dans l'aide intégrée de MapForce.

* Les résultats de performance sont basés sur des tests internes réalisés par Altova. Vos résultats peuvent varier.