User since
2003-08-04
14371
Artikel
ModeratorIn
Probier mal:
my @inhalt = qx (/usr/local/nagios/libexec/check_nrpe20 -H 172.20.2.121 -p 5666 -c check_jobinfos);
my $create_query = "CREATE TABLE job(jobname VARCHAR(52), beschreibung VARCHAR(50), user VARCHAR(12), status VARCHAR(5))";
my $query_fuellen0 = $dbh->prepare("INSERT INTO job VALUES(?,?,?,?)");
$dbh->do( $create_query);
for my $zeile ( @inhalt ){
$query_fuellen0->execute( split /,/, $zeile ) or warn $dbh->errstr;
}
Was das mit den "?" auf sich hat, kannst Du in diesem
Artikel nachlesen.
Hallo zusammen,
ich versuche ein array in eine db zu schreiben, und zwar folgendermaßen
1. ich führe ein command aus welches eine textdatei in eine Variable speichert, danach mit der Funktion split die Variable in ein array $inhalt2 umgesetzt. jetzt speichert er immer nur die erste Zeile und den rest nicht.
my $inhalt = qx (/usr/local/nagios/libexec/check_nrpe20 -H 172.20.2.121 -p 5666 -c check_jobinfos);
my @inhalt2 = split(/,/,$inhalt);
my $create_query = "CREATE TABLE job(jobname VARCHAR(52), beschreibung VARCHAR(50), user VARCHAR(12), status VARCHAR(5))";
my $query_fuellen0 = $dbh->prepare("INSERT INTO job VALUES('$inhalt2[0]','$inhalt2[1]','$inhalt2[2]','$inhalt2[3]')");
$query_del->execute();
$dbh->do($create_query);
$query_fuellen0->execute();
$dbh->disconnect;
muss ich da eine Schleife machen, oder gibt es eine andere Lösung, eine Textdatei in eine Array umzuwandeln und in die DB zu schreiben?
dank & gruß Olli
hi renee,
danke erstmal für die Antwort.
Funkt leider nicht so richtig.
es kommt die Fehlermeldung:
DBD::mysql::st execute failed: called with 17 bind variables when 5 are needed at ./check_job.pl line 32.
called with 17 bind variables when 5 are needed at ./check_job.pl line 32.
ich denke er will für jede variable eine Spalte, aber ich möchte, dass es in mehreren Zeilen geschrieben wird.
Hast du da vielleicht eine Ahnung
Danke & Gruß Olli
User since
2003-08-04
14371
Artikel
ModeratorIn
Schau Dir doch mal an, was in
@inhalt steckt.
Und mach mal aus
$query_fuellen0->execute( split /,/, $zeile ) or warn $dbh->errstr
ein
$query_fuellen0->execute( (split /,/, $zeile)[0..4] ) or warn $dbh->errstr
User since
2003-08-04
14371
Artikel
ModeratorIn
Gast+2008-05-20 13:37:35--ich denke er will für jede variable eine Spalte, aber ich möchte, dass es in mehreren Zeilen geschrieben wird.
Beschreib das mal genauer!
hi rene,
in @inhalt steht:
ANZAHL USER ,User die online sind ,baan ,1; IRION ,testjob ,baan ,3; TESTJOB ,test job ,baan ,1; WEST ,west test ,demo ,1 ;
jetzt soll das in eine tabelle mit den Feldern name, beschreibung, user, status geschrieben werden. Der Inhalt des Arrays @inhalt kann natürlich variieren. Jetzt wird alles in die erste Zeile geschrieben, er springt nicht in die zweite Zeile usw.
danke Olli
User since
2003-08-04
14371
Artikel
ModeratorIn
Steht das alles im ersten Element von @inhalt, oder in verschiedenen Elementen?
ja steht alles in $inhalt[0].
ich glaube da liegt das problem.
kann man das ändern?
olli
User since
2003-08-04
14371
Artikel
ModeratorIn
Mach mal aus
my @inhalt = qx (/usr/local/nagios/libexec/check_nrpe20 -H 172.20.2.121 -p 5666 -c check_jobinfos);
ein
my @inhalt = split /;/, qx (/usr/local/nagios/libexec/check_nrpe20 -H 172.20.2.121 -p 5666 -c check_jobinfos);
Und nimm ein ",?" aus dem
prepare raus...
User since
2003-08-04
14371
Artikel
ModeratorIn
Da das scheinbar Nagios ist, stellt sich die Frage, ob es nicht schon ein Perl-Plugin gibt, dass Dir die Infos liefern kann, ohne dass Du ein System-Aufruf machen musst.