Schrift
[thread]9187[/thread]

schreiben in array dann auswerten ?



<< >> 10 Einträge, 1 Seite
fraggs
 2007-07-13 13:24
#78443 #78443
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
halloechen so da die datenbank abfrage nun perfekt laeuft hab ich ein kleines problem.
Code: (dl )
1
2
3
4
5
6
7
8
#Liest die Tabelle tblEndmontage und nimmt die ganze Tabelle und schiebt sie in $alles
my $alles = $cn->selectall_arrayref("SELECT * FROM tblEndmontage");
#fuer jede Reihe druckt er die Ergebnisse mit einem Colon trenner aus in die CLI
foreach my $row ( @{$alles} )
{
print join(";", @{$row}), "\n";
}
}


dies ist das stueck des codes. also die query klappt und druckt auch die ganze reihe der tabelle perfekt in die CLI aus nun will ich diese aber nicht nur ausdrucken sondern entweder in ein array speichern (wenn das klappt) oder temporaer eine txt erstellen wo alle daten reingeschrieben werden.

ich habs schon versucht mit
Code: (dl )
1
2
3
4
5
6
7
8
9
foreach my $row ( @{$alles} )
{
open( FILE, ">", $tmptxt ) or die $!;

print join FILE (";", @{$row}), "\n";

close(FILE);
}
}

allerdings erzeugt er das txt file doch schreibt nichts herrein und wenn er was herrein schreibt dann eine zeile und das wars.

und ich bekomme auch ganz viele tolle errors die mir sagen das
Quote
Use of uninitialized value in join or string at dballdb1.pl line 45.
... und welche variable ist das die dort nicht definiert ist ?

bedanke mich
mmm twix
renee
 2007-07-13 13:44
#78444 #78444
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mit '>' wird die Datei jedesmal neu erstellt. Entweder Du nimmst '>>' (dann wird an die bestehenden Zeilen angehängt) oder - was besser ist - Du öffnest die Datei einmal *vor* der Schleife...

Code: (dl )
1
2
3
4
5
6
7
8
open( FILE, ">", $tmptxt )  or die $!;

foreach my $row ( @{$alles} )
{
print join FILE (";", @{$row}), "\n";
}

close(FILE);


In dem Array @{$row} sind wohl ein paar undefs drin...

Probier mal:
Code: (dl )
print join FILE (";", map{ defined $_ ? $_ : '' }@{$row}), "\n";
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/
fraggs
 2007-07-13 14:46
#78445 #78445
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
print FILE join (";", map{ defined $_ ? $_ : '' }@{$row}), "\n";
so funktionierts und wirft auch keine undefined variable errors.

nun kommt es zur auswertung aber dazu mach ich mir noch weitere gedanke und werde anfang naechster woche posten wenn ich nicht weiter komme !

danke !
mmm twix
fraggs
 2007-07-13 16:03
#78446 #78446
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
da bin ich nun angelangt. also in den auswertungen sub routinen werden dann die txt dateien eingelesen und dann ja was dann. also der daten satzt fuer die erste auswertung sieht so aus.
Quote
6551;25787;525557;103010;1;;04.07.2007 09:47:01;Oestreich_K
6552;25784;525586;103011;1;;04.07.2007 09:49:41;Oestreich_K
6553;25785;525539;103012;1;;04.07.2007 09:51:48;Oestreich_K
6554;25795;525538;103013;1;;04.07.2007 09:53:59;Oestreich_K
6555;25778;525529;103014;1;;04.07.2007 09:56:45;Oestreich_K
6556;25783;525528;103015;1;;04.07.2007 10:02:06;Oestreich_K
6557;25782;525537;103016;1;;04.07.2007 10:04:05;Oestreich_K
6558;25802;525547;103018;1;;04.07.2007 10:06:11;Oestreich_K
6559;25801;525530;103019;1;;04.07.2007 10:23:57;Oestreich_K
6560;25800;525550;103020;1;;04.07.2007 10:26:07;Oestreich_K
6561;25797;525543;103021;1;;04.07.2007 10:41:04;Oestreich_K
6562;25796;525566;103022;1;;04.07.2007 10:43:27;Oestreich_K
6563;25793;525544;103023;1;;04.07.2007 10:45:18;Oestreich_K
6564;25794;525548;103024;1;;04.07.2007 10:47:26;Oestreich_K
6565;25791;525571;103025;1;;04.07.2007 10:49:34;Oestreich_K
6566;25667;525527;103027;1;;04.07.2007 10:51:30;Oestreich_K
6567;25666;525561;103028;1;;04.07.2007 11:15:59;Oestreich_K

so am anfang werde ich gleich noch ein Tk interface reinbasteln undzwar mein ein paar input feldern. dort wird entweder eine der zweiten,dritten oder vierten spalte eingegeben. nach dieser zahl soll dann das ganze file durchsucht werden (in diesem query beispiel steht in der vierten spalte nichts sowie in der fuenften)

Quote
6775;103033;RHL;531;1;;09.07.2007 11:14:13;stein_m
so nun zur zweiten query dort sieht alles so aus. hier muss ich suchen nach der referenz nummer (vierte spalte von der ersten query) sobald diese spalte gefunden ist will ich dann den namen welcher in der dritten spalte steht und auch den status ob 1 oder 2 in ein txt file schreiben.

bei diesen auswertungen waere es super wenn mir jemand eine regex zusammen basteln koennte.

vielen vielen dank

kurz post:
-erste query soll nach einer der drei spalten gesucht werden (zweite,dritte oder vierte)
-sobald die reihe gefunden wurde soll die zweite bis fuenfte spalte in ein txt file geschrieben werden
-dann die zahl von der ersten query in der vierten spalte nehem und in der zweiten query nach suchen.
-wenn gefunden den namen des geraetes (rhl ... kann verschieden sein !) und die fuenfte spalte wieder in ein txt file schreiben.\n\n

<!--EDIT|fraggs|1184328916-->
mmm twix
nepos
 2007-07-13 17:23
#78447 #78447
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Uhm, wieso filterst du nicht gleich bei der Datenbankabfrage?
Finde es etwas umständlich, erst ein CSV-File zu erzeugen, dann darin zu suchen und Teile des Files wieder in andere Dateien zu schreiben.
RPerl
 2007-07-13 21:38
#78448 #78448
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo,

also, wenn Du anstatt einer tmpfile lieber ein array haben moechtest, ginge das so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;

my @array = ();
my $tmp = 'CONTENT';

push(@array, $tmp);
print @array;


Ich persoenlich wuerde keine tmpfile anlegen, oder sie zumindest danach auf jedenfall wieder unlink() "schicken".

2. Wenn Du bestimmte Werte brauchst, dann koenntest Du evtl. auch einfach die Abfrage an die Datenbank anpassen, ODER ein regex benutzen, was aber mehr CPU verschlingen wird.

Ich hoffe das hilft...

Gruß,

rPerl
topeg
 2007-07-13 23:58
#78449 #78449
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich stimme RPerl zu. Datanbanken sind genau zu dem Zweck da, Daten zu verwalten. Sie sind darin viel schneller, als Perl es jemals sein könnte.
fraggs
 2007-07-16 11:38
#78450 #78450
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
danke fuer die tipps ich hatte auch schon in zwischen eine version mit arrays geschrieben denn am freitag dachte ich mir so ... fuer was brauch ich die tmpfiles ? warum nicht gleich in array.

dann kam auch die idee auf ueber die cli eine direkte query abfrage zu machen.
machte mich auch auf die suche nach den bestimmten querys allerdings ist das etwas lustig mit access da keiner wirklich ueber querys arbeitet ... ich melde mich zurueck wenn jemand info hat wo man sich weiter in access querys etc. lesen koennte dann postet es bitte.
mmm twix
topeg
 2007-07-16 21:22
#78451 #78451
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
ptk
 2007-07-16 22:23
#78452 #78452
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=topeg,13.07.2007, 21:58]Ich stimme RPerl zu. Datanbanken sind genau zu dem Zweck da, Daten zu verwalten. Sie sind darin viel schneller, als Perl es jemals sein könnte.[/quote]
Das stimmt nicht, jedenfalls nicht pauschal. Perl kann bei manchen "Datenbankoperationen" schneller als DB-Engines sein.
<< >> 10 Einträge, 1 Seite



View all threads created 2007-07-13 13:24.