Altova MapForce 2023 Enterprise Edition

Lors de la transformation de données de la base de données, vous allez éventuellement devoir supprimer des caractères spéciaux spécifiques, tels que des caractères chariot/saut de ligne (CR/LF), du chariot sources de données. Pour ce faire, vous pouvez utiliser une des approches suivantes :

 

1.Définir une fonction de nœud pour le champ de base de données spécifique (ou même plusieurs champs) dont vous avez besoin. La fonction de nœud recevra la valeur du champ de base de données en tant qu'entrée, y appliquera des processus puis retournera le résultat au mappage. Pour plus d'informations concernant cette technique, voir Défauts et fonctions de nœud.

2.Traiter les valeurs de base de données avec l'aide des fonctions intégrées MapForce. Par exemple, pour identifier des caractères spécifiques, y compris les caractères de commande, vous pouvez utiliser la fonction char-from-code depuis la bibliothèque "core". Pour remplacer des valeurs, utiliser la fonction replace depuis la bibliothèque "lang".

 

Cette rubrique illustre la seconde approche. La base de données utilisée dans cet exemple est la base de données SQLite, mais la même stratégie peut être appliquée avec d'autres base de données également.

 

Considérez une base de données SQLite consistant en une table "Lignes" qui a deux colonnes : "ID" et "Description".

mf_db_specialchars_01

L'objectif est d'extraire chaque description d'un fichier CSV (une description par ligne) ; ainsi un mappage pour atteindre cet objectif pourrait ressembler à l'exemple suivant :

mf_db_specialchars_02

Néanmoins, étant donné que chaque ligne "Description" dans Access contient plusieurs lignes séparées par des caractères CR/LF, la sortie de mappage contient aussi des sauts de ligne, ce qui n'est pas le résultat intenté :

mf_db_specialchars_03

 

Afin de surmonter ce problème, nous allons ajouter au mappage les fonctions char-from-code et replace depuis la bibliothèque intégrée MapForce (voir aussi Ajouter une fonction au mappage). Chaque description doit être traitée de manière à ce que, quels que soient les caractères rencontrés ci-dessus, ils doivent être remplacés par un caractère d'espace.

 

Dans le graphique Unicode (http://www.unicode.org/charts/), les caractères LF et CR correspondent aux caractères hex 0A | dec 10 et hex 0D | dec 13, respectivement. C'est pourquoi le mappage doit être modifié pour convertir les valeurs Unicode décimales 13 et 10 en un string, afin de permettre un autre traitement par la fonction replace.

mf_db_specialchars_04

Si vous faites un aperçu du mappage maintenant, vous verrez que les caractères CR/LF se trouvant dans le champ de base de données ont chacun été remplacés par un espace.

mf_db_specialchars_05

© 2017-2023 Altova GmbH