Donnerstag, 27. Februar 2014

ODI - Textdateien in einem Mapping einlesen

Zielsetzung:


In einem neuen Projekt sollen csv-Dateien als Source zur Verfügung gestellt werden.
Eine als Source zur Verfügung gestellte Text-Datei soll mit Hilfe eines Mappings 1:1 in eine Staging-Tabelle in einer Oracle Datenbank eingelesen werden.

Umsetzung:

 

1.) Topologie
Im ersten Schritt muss wie em letzten Post gezeigt ein neuer Datenserver in der Topologie erstellt werden.

Hier sind in dem Tab Definition der Benutzer/Schema und sein Passwort anzugeben.


Unter dem Tav JDBC muss dann der passende Oracle-Treiber ausgewählt werden und die JDBC-Connect Informationen zur Datenbank eingetragen werden.



Sind alle nötigen Verbindungsinformationen eingegeben, kann getestet werden, ob die Verbindung aufgebaut werden kann.


Danach muss unter dem neu angelegten Datenserver ein neues physikalisches Schema erstellt werden.


Damit wie aufgefordert ein Kontext zugewiesen werden kann, wird jetzt ein logisches Schema erstellt.


2.) Target einbinden

Sobald die Topologie angelegt ist, kann nun im Designer Tab ein neues Modell angelegt werden, welches auf das zuvor erstellte logische Schema verweist.


Da die Zieltabelle schon in der Datenbank vorhanden ist, können nun ihre Metadaten über das Reverse Engineering ins logische Modell importiert werden. Hier ist das Selektive Reverse Engineering von Vorteil, weil mit dem „normalen“ Reverse Engineering die Metadaten aller Tabellen aus dem Datenbank-Schema importiert werden.



3.) Mapping erstellen

Die Metadaten der Quelle und der Zieltabelle stehen nun zur Verfügung, so dass ein einfaches Mapping erstellt werden kann, welches die Daten erstmal 1:1 in die Datenbank einliesst.

Hierfür muss ein neues Projekt erstellt werden und darin der automatisch angelegte Ordner sinnig benannt werden


Mit einem Rechtsklick auf Mapping wird nun das oben ein neues Mapping erstellt. Wobei der Haken für „Create Empty Dataset“ herausgenommen wird. (Gibt es viele verschiedene Quellen, kann man mit Datasets diese gruppieren und somit steuern, wo Joins oder Filter angewendet werden.


In das leere Mapping-Fenster werden dann sowohl das Quell-Objekt, als auch die Zieltabelle per Drag&Drop gezogen.


Dann müssen aus der Quelle TIME_EXPORT die einzelnen Spalten auf die dazu passenden Spalten in der STG-Tabelle gemappt werden. Dieses geschieht am einfachsten, wenn man die Spalten per Maus aus dem Quell-Objekt auf die Spalten des Ziels zieht.


In der logischen Ansicht muss noch sichergestellt werden, dass die richtige Integrationsstrategie gewählt ist, in unserem Fall „Control Append“ weil die Daten erstmal 1:1 in die Tabelle eingefügt werden sollen.


Danach wechselt mann in die Physische Ansicht und sieht die Struktur des Mappings, mit einer Source-Group und einer Target-Group.


In dieser Ansicht ist noch in den Eigenschaften sicherzustellen, dass das richtige Loading- und Integrations-Modul gewählt ist.

Für das Loading Knowledge-Modul wählt man das Element „TIME_EXPC“ aus und stellt in den Eigenschaften unter Loading Knowledge-Modul das mitgelieferte Modul „LKM SQL to SQL“ aus.



Als Integration Knowledge-Modul dient das „IKM Oracle Insert“ und wird an der Komponente „TB_TIMES_STG“ eingestellt.


4.) Ausführung

Jetzt kann das Mapping gespeichert und ausgeführt werden.





Für das Testen reicht der lokal Agent.



Unter dem Tab Operator kann man sich nun anschauen, ob die Ausführung des Mappings funktioniert hat und wie viele Datensätze übertragen wurden…



Ein Tipp zum Schluss: Auch bei Spaltenüberschriften für Textdateien sollten keine Oracle-Schlüsselwörter benutzt werden, da sonst das Mapping nicht funktioniert ;-)


Keine Kommentare:

Kommentar veröffentlichen