Insérer des données dans une table
Un mappage peut insérer des données dans la table de base de données depuis toute source de composants prise en charge par MapForce, y compris d’autres bases de données. Vous pouvez configurer de manière très flexible comment la clé primaire des enregistrements insérés récemment doit être créée. Par exemple, la clé primaire peut être prélevée depuis le mappage, généré par la base de donnée ou calculée sur la base des valeurs de clé existante dans la table de base de données.
Cet exemple vous montre comment insérer de nouveaux enregistrements dans une table de base de données existante depuis un fichier XML. Vous allez aussi configurer comment générer la clé primaire. L'exemple utilise les fichiers suivants :
•altova-cmpy.xml — contient les données de source à insérer dans la base de données.
•Altova_Hierarchical.xsd — le schéma utilisé pour valider le fichier d'instance ci-dessus.
•AltovaTarget.mdb — la base de données à mettre à jour.
Tous de fichiers sont disponibles dans le dossier <Documents>\Altova\MapForce2023\MapForceExamples\. Ci-dessous, le chemin complet vers les fichiers sera omis, par mesure de simplicité.
Le mappage dans cet exemple modifie un fichier de base de données d'échantillon. Il est fortement recommande de sauvegarder la base de données originale et de commencer avec une nouvelle copie avant de suivre les étapes ci-dessous. Cela garantit que les exemples originaux ne sont pas contournés et que vous obtenez les mêmes résultats ci-dessous. Pour plus d'informations, voir Exécuter des mappages qui modifient les bases de données. |
L'objectif du mappage est d'insérer des entreprises trouvées dans Altova-cmpy.xml en tant que nouveaux enregistrements dans la table "Altova" de la base de données Altova.sqlite. Si vous ouvrez le fichier XML de source, vous remarquerez qu'il contient une seule entreprise, appelée "Microtech OrgChart". C'est pourquoi, le mappage doit ajouter un nouvel enregistrement dans la table "Altova" portant le nom "Microtech OrgChart". De même, une nouvelle clé primaire doit être générée.
Pour atteindre l'objectif de mappage, nous allons suivre les étapes suivantes.
Étape 1 : Insérer le composant XML source
•Dans le menu Insérer, cliquer sur Schéma/Fichier XML, et chercher Altova_Hierarchical.xsd. Lorsque vous êtes invité à fournir un fichier d'instance, chercher Altova-cmpy.xml.
Étape 2 : Insérer la base de données cible
•Dans le menu Insérer, cliquer sur Base de données, et suivre les étapes de l'assistant pour vous connecter à Altova.sqlite. Voir Ajouter une Base de données.
Étape 3 : Tirer les connexions
•Tracer les connexions de mappage comme indiqué ci-dessous.

Note : | Si des connexions non désirées sont tracées automatiquement pour des items descendants, l'option "Connecter automatiquement des enfants" est active. Dans ce cas, pour défaire la dernière action, choisir l'option de menu Édition | Annuler. Pour désactiver l'option de connexion automatique, choisir l'option de menu Connexion | Auto connexion des enfants correspondants. |
Étape 4 : Configurer l'action Insérer
1.Dans le composant cible, veuillez noter les sur la touche Action: Bouton Insérer ( ). Cette touche apparaît pour chaque table qui dispose d'une connexion depuis le mappage (dans ce cas, la table "Altova"). Cliquer sur cette touche pour configurer avec plus de détails l'action de base de données à exécuter (dans ce cas, l'action Insérer). Le dialogue des Actions de base de données de table apparaît.
2.Dans le dialogue des Actions de base de données de table, sous Insérer tout, à côté de PrimaryKey, choisir l'option max() + 1.

Les options disponibles dans cette liste auront les significations suivantes :
Option | Description |
Valeur mappée | Autorise les données de source à être mappées directement dans le champ de base de données et il s'agit du paramètre standard pour tous les champs de base de données. Il est également possible d'utiliser une procédure stockée pour fournir une valeur de clé en définissant une relation, voir Utiliser des procédures stockées pour générer des clés primaires. |
max() + 1 | Génère les valeurs de clé basées sur les clés existantes dans la base de données. Par exemple, si la table comporte trois enregistrements, avec la clé primaire 1, 2 et 3, puis max() + 1 est 4.
Dans cet exemple, la table "Altova" a uniquement un enregistrement avec la clé primaire 1, donc max() + 1 est 2, qui est la valeur attendue de la nouvelle clé primaire. |
DB-generated | La base de données utilise la fonction Identité pour générer des valeurs clé. |
L'option valeur mappée située à côté de "Name" signifie que cette colonne obtiendra la valeur directement depuis le mappage. Pour des références vers d’autres options disponibles dans la boîte de dialogue Actions de Table de base de données, voir Paramètres Actions de table de base de données..
Étape 5 : Consulter le mappage et mettre à jour la base de données
Cliquer sur l'onglet Sortie pour consulter le mappage. Un script SQL est généré, contenant les actions à exécuter par rapport à la base de données. Le script n'a pas encore modifié la base de données ; elle est uniquement destinée à la prévisualisation. Pour exécuter le script par rapport à la base de données :
•Dans le menu Sortie, cliquer sur Exécuter Script SQL.
Note : | L'exécution du script SQL directement depuis MapForce est juste un des moyens mis à disposition pour mettre à jour la base de données, voir aussi Exécuter des mappages qui modifient des bases de données. |
Pour voir le résultat, ouvrir la base de données Altova.sqlite dans DatabaseSpy ou Access. Veuillez noter qu'un nouvel enregistrement "Microtech OrgChart" a été ajouté à la table "Altova" avec la nouvelle clé primaire 2. Les données pour cet enregistrement provenaient de l'instance XML d'entrée.

Vous avez à présent terminé de créer un mappage qui insère des données dans une table de base de données. Pour consulter un exemple de mappage de données qui insère les données aussi bien dans la table actuelle que dans une table enfant dépendante, voir Insérer des données dans plusieurs tables liées.