Thread Zeile im FH wird durch eine Unterabfrage (~"if eof") der while-Schleife übersprungen (22 answers)
Opened by norvel at 2012-07-31 16:42

norvel
 2012-08-01 11:04
#160376 #160376
User since
2012-07-26
20 Artikel
BenutzerIn
[default_avatar]
File-Aufbau:
Das .csv File hat in der ersten Zeile Überschriften, alle Weiteren Zeilen sind mit Daten Gefüllt (angenommen: 6000 Zeilen, 23Einträge pro Zeile).

Bsp:
CUSTOMER_ID,CUSTOMER_NAME,COUNTRY_NAME,AREA_NAME...COUNT_DATE(YYYYMMDD)
1111, Kunde1, Germany, NRW...20120725
1111, Kunde1, Germany, NRW...20120726
1112, Kunde2, Germany, BW...20120726
...
...
(CUSTOMER_ID ist im code a.id)

Ziel:
In z.B.500er Schritten das File auslesen und durch:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
if ($i1>=1 && $sql ==1)
{
$query_out[$i1] = "(a.asset_id = '$data_array[$i1][0]' and cc.serial_nr = '$data_array[$i1][20]')";
print "$query_out[$i1][0]";
print "$query_out[$i1][20]";
$sql = 0;
}
elsif ($i1>1)
{
$query_out[$i1] = " OR (a.asset_id = '$data_array[$i1][0]' and cc.serial_nr = '$data_array[$i1][20]')";
print "$query_out[$i1][0]";
print "$query_out[$i1][20]";
}

den SQL Query füllen: (Die Abfrage in 500er Stritten ist notwendig, da sonst die Datenbank bei so vielen OR's zu lange brauchen würde.)
Code: (dl )
my $db_query= "select (...) from (...) where (...)and (@query_out) group by (...)";


Dann die Daten, die zurückkommen weiterverarbeiten (der richtigen Zeile zuordnen (indem über das @data_array Vergleiche laufen) & wegschreiben)
Code: (dl )
# ....Weiterverarbeitung.....

Die nächsten 500 Zeilen einlesen, Weiterverarbeiten, die nächsten 500 Zeilen......die LETZTEN 43 Zeilen einlesen, Weiterverarbieten - hier liegt das Problem.
Der Code:
Code: (dl )
if ($i3>= $breakpoint)

fängt diesen Sonderfall nicht ab.
Last edited: 2012-08-01 11:29:07 +0200 (CEST)

View full thread Zeile im FH wird durch eine Unterabfrage (~"if eof") der while-Schleife übersprungen