Schrift
[thread]5867[/thread]

datehandles?? zeiger???



<< >> 5 Einträge, 1 Seite
Andreas
 2003-10-31 14:52
#68385 #68385
User since
2003-09-24
111 Artikel
BenutzerIn
[default_avatar]
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
jan10001
 2003-10-31 16:06
#68386 #68386
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Warum sperrst du die Datei nicht und liest dann alles in die DB und arbeitest dann nur noch mit der DB?
Andreas
 2003-10-31 16:11
#68387 #68387
User since
2003-09-24
111 Artikel
BenutzerIn
[default_avatar]
Die Datei wird von einem Programm erzeugt auf das ich keinen Einfluss habe.
steffenw
 2003-10-31 22:15
#68388 #68388
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Warum willst Du das File verändern. Du brauchst Dir doch nur die Position merken, bis zu welcher Du die Datei schon verarbeitet hast.
Code (perl): (dl )
1
2
3
4
5
6
7
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};
Dubu
 2003-11-03 14:12
#68389 #68389
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
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.
<< >> 5 Einträge, 1 Seite



View all threads created 2003-10-31 14:52.