Talend Open Studio ETL – Einführung

ETL steht für

  • Extract
  • Transform
  • Load

Talend Open Studio ist eine Entwicklungsumgebung, die sich genau auf diese 3 ETL-Funktionen spezialisiert hat. Extract, Transform und Load werden hierbei sehr weit gegriffen und zur Instrumentalisierung werden weitere Komponenten angeboten, die weit mehr ermöglichen als Daten von einer Datenquelle zur anderen zu schieben.

Wozu kann man es anwenden?

  • Daten extrahieren, in Informationen wandeln oder Datentypen wandeln, in Zielsystem laden…
  • Datenbestände unterschiedlicher Systeme können zusammengeführt, verglichen und normalisiert werden
  • Import / Export

(more…)

Oracle – Passwort Reset

Problemdarstellung
Hat man das passwort der Datenbank dann doch vergessen… wie kommt man wieder dran?
Unter Windows einloggen. Man muss Mitglied der Gruppen Administrators oder der ORA_DBA sein.

Danach:
sqlplus /nolog
connect / as sysdba

Nun ist man ohne Passwort connected und kann Passwörter setzen
ALTER USER username IDENTIFIED BY new_password;

GREATEST und LEAST

Manchmal hat man das Problem, dass DECODE nicht richtig passt und CASE zu aufwändig ist. .. und man will ja nicht immer neue Oracle-Funktionen selbst schreiben
Hier helfen noch die Oracle-Funktionen GREATEST und LEAST

greatest(e1[,e2] …) größter Wert der Ausdrücke
least(e1[,e2] …) kleinster Wert der Ausdrücke

bei einem Vergleich von Strings gilt:

  • greatest (‘abc’,’cbe’) = ‘cbe’
  • greatest (‘ABC’,’cbe’) = ‘cbe’
  • greteast(‘ABC’,’987′) = ‘ABC’

Die Funktionen bitte nicht mit den Gruppierfunktionen MIN und MAX verwechseln!

SQL – Like-Suche nach Wildcard-Zeichen unter Oracle

Aktuell werden auch schon teilweise REGEX-Funktionen in Datenbanken etabliert.
Oftmals reicht aber eine einfache Suche mit vorgegebenen Mustern
Select * from Mitarbeiter
where nachname like ‘H%mann‘;
Liefert Heinemann, Heynemann und auch Hoffmann
Select * from Mitarbeiter
where nachname like ‘He_nemann‘;
Liefert nur Heinemann, Heynemann
Zum ignorieren von Klein – und Großschrift kann man beides klein setzen
Select * from Mitarbeiter where lower(nachname) like lower(‘He_nemann‘);
Escape-Zeichen ermöglichen die Suche von Datensätzen, die einen eigentlichen Wildcard enthalten.
Die nachfolgende Suche liefert alle Tabelle, die auch ein “_” enthalten:
Select * from all_tables
where table_name like ‘%\_%’ ESCAPE ‘\’

Oracle, Alternative zu DECODE ist CASE

Decode ist eine einfache Funktion, in der man eine Expression beschreibt und dann fast beliebig viele Ersetzungen durchführen kann.
Leider werden die Expressions, Search und Result-Ketten aber manchmal zu komplex oder Decode mehrfach geschachtelt.
Einfacher ist es hier, direkt Case einzusetzen.

DECODE
Syntax: decode( expression , search , result [, search , result]… [, default] ) as label

select
decode(POSTLEITZAHL, 70599, ‘Stuttgart – Asemwald’, 70499, ‘Stuttgart – Bergheim’, ‘UNBEKANNT’) from ADRESSE;

 

 

CASE – Funktion, längere Schreibweise, – aber flexibler

Syntax: case when expression then result
when expression then result
when expression then result
else default
end as label

Beispiel in einer Geräteliste

select
case
when substr(name, -2)=’RH’ then ‘Router‘
when device_id between 1015544 and 1015600 then ‘MURXS’
else ‘sonstiges’
end as Zusatz
, e.* from my_cmdb_devices  e;

Pollin WDC2704 Display am Arduino im 4 Bit-Mode

Hallo zusammen, da ich nun selbst das Problem lösen konnte, hier die Anleitung für die Nachwelt.
Bei Pollin gab es mal das WDC2740 Display preiswert zu kaufen.
Eine einfache Ansteuerung des Displays über die LCDLib und 4 Bit scheiterte im ersten Anlauf.

Lösung: Das Display ist intern 2 Displays , die Anschlussleitungen müssen sehr kurz gehalten werden, Datenleitungen und RS über 100Ohm entkoppeln, Initialisierung als 40×2-Display, obwohl nur 27×2 sichtbar sind….. viele Stolperfallen eben.

Hier die Beschaltung:

LCD / Arduino

R/W auf Masse direkt am Display
LCD RS über 100R auf Arduino D13
LCD ENA2 auf Arduino D12
LCD ENA1 auf Arduino D11
LCD D07 über 100R auf Arduino D10
LCD D06 über 100R auf Ardiono D09
LCD D05 über 100R auf Arduino D08
LCD D04 über 100R auf Ardiono D07

Ansteuerung dann:

#include <LiquidCrystal.h>
// we need 2 LCD-Instances
LiquidCrystal lcd1(13, 11, 7,8,9,10);
LiquidCrystal lcd2(13, 12, 7,8,9,10);

void setup() {
// set up the LCD’s number of columns and rows:
// Internally they are 40×2 controlers, but the physical display is 27×2
lcd1.begin(40, 2);
lcd2.begin(40, 2);
// Print a message to the LCD.
delay(1000);
lcd1.print(“LCD1 Hello World”);
delay(2);
lcd2.print(“LCD2 Hello World, too”);
delay(2);
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd1.setCursor(0, 1);
// print the number of seconds since reset:
lcd1.print(“LCD1 ” + String (millis()/1000));

lcd2.setCursor(0, 1);
lcd2.print(“LCD2 ” + String (millis()/1000) );
delay(20);
}

 

1 2 3 4