Altova MapForce 2023 Professional Edition

Beim Transformieren von Datenbankdaten müssen Sie unter Umständen bestimmte Sonderzeichen wie z.B. Wagenrücklauf (CR)/ Zeilenvorschub (LF) aus der Datenquelle entfernen. Dies können Sie mit Hilfe einer der folgenden Methoden bewerkstelligen:

 

1.Definieren Sie eine Node-Funktion für das jeweilige Datenbankfeld (oder sogar für mehrere Felder), das bzw. die verarbeitet werden soll(en). Die Node-Funktion erhält als Input den Wert des Datenbankfelds. Wenden Sie eine Verarbeitung darauf an und geben Sie das Ergebnis an das Mapping zurück. Nähere Informationen zu dieser Methode finden Sie unter Standardwerte und Node-Funktionen.

2.Verarbeiten Sie Datenbankwerte mit Hilfe von vordefinierten MapForce-Funktionen. Bestimmte Zeichen, darunter auch Steuerelementzeichen, können Sie mit Hilfe der Funktion char-from-code aus der "core"-Bibliothek identifizieren. Um Werte zu ersetzen, verwenden Sie die Funktion replace aus der "lang"-Bibliothek.

 

In diesem Kapitel wird die zweite Methode erläutert. Als Datenbank wird in diesem Beispiel eine SQLite-Datenbank verwendet, doch können Sie auch mit anderen Datenbanktypen auf dieselbe Art arbeiten.

 

Angenommen, Sie haben eine SQLite-Datenbank bestehend aus einer Tabelle "Lines", die zwei Spalten enthält: "ID" und "Description".

mf_db_specialchars_01

Ziel ist es, die einzelnen Beschreibungen in eine CSV-Datei zu extrahieren (eine Beschreibung pro Zeile); ein Mapping, womit Sie dies erreichen, könnte folgendermaßen aussehen:

mf_db_specialchars_02

Da jedoch jede "Description"-Zeile in Access mehrere durch CR/LF-Zeichen getrennte Zeichen enthält, enthält auch das Mapping Zeilenumbrüche, was nicht erwünscht ist:

mf_db_specialchars_03

 

Um dieses Problem zu lösen, werden wir die Funktionen char-from-code und replace aus der Bibliothek der vordefinierten MapForce-Funktionen zum Mapping hinzufügen (siehe auch Hinzufügen einer Funktion zum Mapping). Jede Beschreibung muss verarbeitet werden, sodass die oben genannten Zeichen durch ein Leerzeichen ersetzt werden.

 

In der Unicode-Tabelle (http://www.unicode.org/charts/) entsprechen die Zeichen LF und CR den Hexadezimalzeichen hex 0A | dec 10 bzw. hex 0D | dec 13. Das Mapping muss daher geändert werden, um die Unicode-Dezimalwerte 13 und 10 in einen String zu konvertieren, damit die Daten mit Hilfe der replace Funktion weiter bearbeitet werden können.

mf_db_specialchars_04

Bei Anzeige einer Vorschau auf das Mapping sehen Sie jetzt, dass die Zeichen CR/LF in den einzelnen Datenbankfeldern durch Leerzeichen ersetzt wurden.

mf_db_specialchars_05

© 2017-2023 Altova GmbH