Anfang des Jahres musste ein Kunde aufgrund einer Umstrukturierung sein eingeführtes Warenwirtschaftssystem auf ein aktuelles, innerhalb des Handelsverbandes eingeführtes, aber auch wirklich besseres System, umstellen. Das neue System bot keine entsprechende Importfunktion an, lediglich XML Daten konnten eingelesen werden.
Wegen der beim Kunden vorhandenen eingeschränkten personellen Situation sollten wir die Daten händisch (ca. 35.000 Materialien) von dem einen System auf das andere übertragen. Bei 35.000 Datensätzen mal ca. 1 Minute kein Zuckerschlecken.
Nach einer ausgiebigen Analyse der beiden Systeme konnten die Daten mit folgenden Skriptauszug unter cygwin mit Perl konvertiert werden.
#!/usr/bin/perl use Win32::ODBC;
# Modul einbinden
$db = new Win32::ODBC("DSN=Warenwirtschaft")
$sql_string =("SELECT DISTINCT D.Nummer,
D.Artnr, ........ D.Einheit FROM ARTIKEL D,
VKPREIS D1 WHERE (D.Artnr < '999999') AND
(D1.Artinr = D.Nummer) Order by D.Artnr");
$db->Sql($sql_string);
print '<?xml version="1.0"
encoding="iso-8859-1"?>'."\n";
print '<Warenwirtschaft>'."\n";
while($db->FetchRow()){ %Daten=$db->DataHash();
print ' <Artikel>'."\n";
print ' <Artikelnummer>'.$Daten{"Artnr"}.'</Artikelnummer>'."\n";
#............hier die Felder rein...................... print $Daten{"Fld01"}."\n".$Daten{"Zustext1"}."\n"; }
print '</Warenwirtschaft>'."\n"; $db->Close();
Wir dachten es wäre damit erledigt, bei näherer Betrachtung der konvertierten Daten stellten wir fest, dass innerhalb der Systeme die Umlaute anders gehandhabt wurden, dieses Problem wurde schnell und elegant wie folgt gelöst:
sub konvertiereUmlaute{
$ergebnis=~tr/³°Ï÷õ_¦¯Í/üØØöäܰßÖ/;
return $ergebnis;
}
Der Zeitaufwand für Analyse und Code betrug ca. 2 Stunden. Es hat sich gelohnt. Forden Sie uns heraus! Wir lösen auch Ihr Problem.
created with FHWWB - template (c) fhw 2006
Frank Wisniewski - Lohmühlenstraße 2 - 53518 Adenau
Telefon: 02691/548 - Telefax: 0721/151455410