Thread xml2sql für Dummies Frage (3 answers)
Opened by sequester01 at 2008-06-05 13:23

sequester01
 2008-06-05 13:23
#110761 #110761
User since
2006-10-02
7 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe bisher nur kleine Perlscripte geschrieben und bin leider auch kein Programmierer - immer nur kleine Perl, Bash oder Win Batch Skripte geschrieben.
Ich möchte mein Wissen aber aufgrund eines Problemes vertiefen, welches ich gerne lösen möchte. Daher nerve ich vermutlich mit einer totalen Dummie-Frage:

Ziel ist es aus einer gegebenen XML Datei die Werte in MYSQL zu bringen.

Die XML:
Code: (dl )
1
2
3
4
5
6
7
8
9
<Absatz>
<job id="3245" jobName="Ware1">
<sales Group="Personal" id="0"/>
<production Ausgabe="Tor1"/>
<ware quality="Standard" category="Karton"/>
<versand LieferTyp="196" ProductID="148" AddressID="373"/>
<billing AddressID="366" AddressField1="" AddressField2="" AddressField3="" AddressField4="" AddressField5=""/>
</job>
</Absatz>


Eine XML = ein Datensatz.
In einem Ordner liegen x-beliebige Datein. Jede davon soll als ein Eintrag in einen MySQL Server. Wenn ein Wert (z. B. LieferTyp des versand) nicht existiert, dann sollte das Script eine neue Spalte anlegen.
Das Handling der Dateien ist kein Problem. Aber das mit SQL ist absolutes Neuland - nur irgendwann fängt ja jeder einmal an :-)
Hat jemand Lust mir ein Dummy Script zu zeigen, oder eine Buchempfehlung auszusprechen, wie ich das Lösen kann? Vielleicht hat jemand ein ähnliches Problem gehabt und hat somit eine fast passende Lösung? Herr Goggel hat mir nicht wirklich helfen können, da die Lösungen bereits auf bestehendes Wissen aufbaut.
Ich hatte bereits mit Perldoc versucht weiterzukommen, und mir die einzelnen Werte erst einmal nur anzuzeigen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl
use XML::Parser;
my $zeiger = new XML::Parser ();

sub anfang
{
$wert_des_zeigers = shift;
$starttag= shift;
print "<$starttag>";
print "\n";
}
sub anfanga
{
$wert_des_zeigers = shift;
$starttag= shift;
#chomp $starttag;
print "Anfanga:$starttag";
#print "\n";
}
sub ende
{
($wert_des_zeigers,$endtag) = @_;
print "Ende: $endtag\n";
}
sub inhalt
{
($wert_des_zeigers,$inhalt)=@_;
print " $inhalt";
}

$zeiger->setHandlers (Start => \&anfanga,End => \&ende);
$zeiger->parsefile ("c:\\test.xml");


Aber es gab eigentlich nur wirrwar. Ich finde die XML auch eigenartig, aber so kommt die aus einer Software heraus, die ich nicht ändern kann.

Danke im Voraus,

Seq

View full thread xml2sql für Dummies Frage