Schrift
[thread]12932[/thread]

Ausgabe in DB schreiben

Leser: 4


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2008-12-23 12:11
#117403 #117403
Hi zusammen,

ich versuche eine Ausgabe in eine DB zuschreiben.
Das Problem ist, dass die Asugabe nur durch Leerstellen(unterschiedlich viele) getrennt ist.

Ich habe es nur soweit geschafft alles in eine Spalte zu schreiben.



Code: (dl )
1
2
3
4
5
6
7
8
9
+----------------------------------------------------------------------------------------+
| text |
+----------------------------------------------------------------------------------------+
| client name group date volume (%) |
| mailxxxx MSEXCH:PF MSEXBACKUP MB 12/15/08 000226L2 full |
| p2xxxx SYSTEM DB:\ xxxx 12/15/08 000xxxx full |
| p2xxxx SYSTEM STATE:\ xxxx 12/15/08 000xxxx full |
| snagxxxx / DebugGroup 12/19/08 ACxxx full |
+----------------------------------------------------------------------------------------+



Jetzt möchte ich das ganze in eine Tabelle mit verschiedenen Spalten
z.B.
client name group date volume (%)

mein bisheriger Code:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my $create_query = "CREATE TABLE IF NOT EXISTS fehler(text VARCHAR(1000))";     
my $query_fuellen = qq~INSERT INTO fehler(text) VALUES(?);~;
my $sth = $dbh->prepare( $query_fuellen ) or die $dbh->errstr;

$dbh->do($create_query);
                
for my $i ( 0 .. 4 )
   {
    $sth->execute( $OUT[$i]) or die $dbh->errstr;
    }
$sth->finish;

Grüße & Danke
Linuxer
 2008-12-23 14:36
#117406 #117406
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hm, sorry, ich erkenne Dein Problem nicht.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Gast
 2008-12-23 14:42
#117407 #117407
Das Problem ist, dass der ganze text in einer einzelnen Tabellenzeile steht.
Und nicht in verschiedenen Zeilen und Spalten.

So kann ich das ganze nicht sauber über php auslesen und darstellen.
Linuxer
 2008-12-23 14:47
#117408 #117408
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
In Deinem Datenbeispiel hast Du doch mehrere Zeilen?

Hast Du Dich schon mal mit split() auseinander gesetzt?

Damit könntest Du an der variablen Anzahl Leerzeichen die Fehler auftrennen.
Je nach split-Pattern musst Du aber drauf achten, dass in den Datenfeldern dieses Pattern nicht ebenfalls gefunden wird...

Ansonsten seh ich grad nur noch einen Weg über Reguläre Ausdrücke:

perldoc perlretut
perldoc perlrequick
perldoc perlre
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Gast
 2008-12-23 14:52
#117409 #117409
hi,

ich denke uch das reguläre Ausdrücke die einzige Lösung ist.

danke
Linuxer
 2008-12-23 15:24
#117411 #117411
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Woher stammen denn die Daten?
Wie werden die generiert?
Vielleicht findet sich dort ein Ansatz, wie man die Formatierung anpassen kann.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Gast
 2008-12-23 16:25
#117414 #117414
hi,

ich habe die Daten jetzt bearbeitet und sehen so aus:

Wert1, Wert2, Wert3, Wert4, Wert5; usw.

jetzt klappt das schreiben nicht mehr in die Tabelle.

Es kommt immer die Meldung:

DBD::mysql::st execute failed: called with 1 bind variables when 5 are needed at ./check_networker.pl line 138.
called with 1 bind variables when 5 are needed


mein code:

Code: (dl )
1
2
3
4
5
6
my $query_fuellen = $dbh->prepare("INSERT INTO fehler VALUES(?,?,?,?,?)");
for my $zeile(@daten)
{
next unless $zeile;
$query_fuellen->execute(split /;/, $zeile) or warn $dbh->errstr;
}


ich muss doch noch ein split einbauen, oder?

danke
Struppi
 2008-12-23 16:30
#117416 #117416
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Warum versuchst du mit einem Semikolon zu splitten, wenn deine Daten mit ein Komma getrennt sind?
Linuxer
 2008-12-23 16:32
#117418 #117418
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Wenn Du nun die Werte mit ';' getrennt hast, dann brauchst Du ein entsprechendes split.
Was steht in $zeile, wenn der Fehler auftritt?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Linuxer
 2008-12-23 16:34
#117419 #117419
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Struppi+2008-12-23 15:30:33--
Warum versuchst du mit einem Semikolon zu splitten, wenn deine Daten mit ein Komma getrennt sind?

++ dafür.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-12-23 12:11.