User since
2003-09-24
111
Artikel
BenutzerIn
Hi an alle,
folgendes Prob:
ich lese eine Datei, und möchte Zeilen in eine DB schreiben, danach möchte ich die geschriebenen Zeilen in der Datei markieren mit z.B. * davor. Beim nächsten Zugriff auf die Datei sind neue Zeilen dazugekommen die nicht markiert sind und jetzt möchte ich nur die nichtmarkierten Zeilen in die DB schreiben und die Zeilen wiederum mit * markieren.
Ok hört sich wahrscheinlich total verwirrend an :-)
Inhalt der Datei:
PC1 5 8 9 10
PC2 5 8 9 10
PC3 7 7 9 10
PC3 5 8 9 10
--> diese Datei öffnen und die Zeilen in eine DB schreiben
--> war das schreiben in die DB erfolgreich, die eingetragenen Zeilen markieren:
* PC1 5 8 9 10
* PC2 5 8 9 10
* PC3 7 7 9 10
* PC3 5 8 9 10
5 Minuten später:
* PC1 5 8 9 10
* PC2 5 8 9 10
* PC3 7 7 9 10
* PC3 5 8 9 10
PC3 7 7 9 10
PC3 5 8 9 10
--> die nicht markierten Zeilen in die DB danach in der Datei markieren:
* PC1 5 8 9 10
* PC2 5 8 9 10
* PC3 7 7 9 10
* PC3 5 8 9 10
* PC3 7 7 9 10
* PC3 5 8 9 10
usw.
Sinn des ganzen:
Es kann passieren das wärend des DB Eintrags ein neue Zeile dazukommt, und ich es nicht mitbekomme. Es dürfen keine Daten verloren gehen.
leider kenn ich mich nicht mit Dateizeigern aus, kann mir da jemand von euch weiterhelfen?
Danke schon mal
Andreas
User since
2003-08-14
962
Artikel
BenutzerIn
Warum sperrst du die Datei nicht und liest dann alles in die DB und arbeitest dann nur noch mit der DB?
User since
2003-09-24
111
Artikel
BenutzerIn
Die Datei wird von einem Programm erzeugt auf das ich keinen Einfluss habe.
User since
2003-08-15
692
Artikel
BenutzerIn
Warum willst Du das File verändern. Du brauchst Dir doch nur die Position merken, bis zu welcher Du die Datei schon verarbeitet hast.
open FILE, "< $filename";
seek FILE, $letzte_position_zB_in_datenbank_gemerkt, 0;
while (my $line = <FILE>)
{ schreibe_daten_in_datenbank($line);
}
merke_letzte_position_in_datenbank(tell FILE);
close FILE;
$SIG{USER} = sub {love 'Perl' or die};
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Denk daran: Wenn du Text hinzufuegst, wird die Datei groesser und die Inhalte verschieben sich! Wenn das andere Programm weiter in die noch geoeffnete Datei schreibt, werden dabei hoechstwahrscheinlich schon vorhandene Daten ueberschrieben.
Wenn tatsaechlich immer nur Daten angehaengt werden, mache es so, wie steffenw vorgeschlagen hat.