Schrift
[thread]11845[/thread]

array in datenbank schreiben

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
renee
 2008-05-20 12:09
#109972 #109972
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Probier mal:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
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 Wiki:Artikel nachlesen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-20 11:48
#109974 #109974
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
Gast Gast
 2008-05-20 15:37
#109992 #109992
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
renee
 2008-05-20 15:41
#109995 #109995
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir doch mal an, was in @inhalt steckt.

Und mach mal aus
Code (perl): (dl )
$query_fuellen0->execute( split /,/, $zeile ) or warn $dbh->errstr
ein
Code (perl): (dl )
$query_fuellen0->execute( (split /,/, $zeile)[0..4] ) or warn $dbh->errstr
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-05-20 15:42
#109996 #109996
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-20 15:51
#109998 #109998
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
renee
 2008-05-20 15:58
#109999 #109999
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Steht das alles im ersten Element von @inhalt, oder in verschiedenen Elementen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-20 15:59
#110000 #110000
ja steht alles in $inhalt[0].
ich glaube da liegt das problem.

kann man das ändern?

olli
renee
 2008-05-20 16:15
#110003 #110003
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach mal aus
Code (perl): (dl )
my @inhalt = qx (/usr/local/nagios/libexec/check_nrpe20 -H 172.20.2.121 -p 5666 -c check_jobinfos);
ein
Code (perl): (dl )
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...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-05-20 16:15
#110004 #110004
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2008-05-20 11:48.