p4linux
Goto Top

Inhalte aus mehreren Textdateien in eine kopieren

Hallo zusammen,

mein Problem besteht darin, dass ich Textdateien aus einer externen Anwendung in eine Datenbank übernehme.

Die externe Anwendung liefert eine Datei Textdatei in einem bestimmten Ordner z.B C:\temp. Diese Datei heist dann "test.txt".

Wird diese Datei durch Performanceprobleme nicht eingelesen und folgt daraufhin ein neuer Datensatz heißt dieser dann test1.txt der nächste test2.txt usw. usw

Unsere Anwendung kann aber immer nur die erste (test.txt) einlesen! Wenn ich die anderen dann umbenenne klappt es!

Nun meine Frage:

Welche möglichkeit habe ich alle Dateien die TestXX.txt heisen in eine einzelne, möglichst via Batch oder externer Anwendung in eine einzelne Datei zu kopieren.

Anmerkung: Der Inhalt der Datei Test.txt besteht nur aus einem Datensatz!

Danke für eure hilfe

Content-Key: 81188

Url: https://administrator.de/contentid/81188

Printed on: April 16, 2024 at 17:04 o'clock

Member: Biber
Biber Feb 20, 2008 at 09:37:29 (UTC)
Goto Top
Moin p4linux,

willkommen im Forum.

Der Prozess ist unklar.
1) wenn denn normal nur ein Datensatz in der Text.txt enthalten ist, kann denn Eure Applikation damit umgehen, wenn da jetzt mehrere (aus Text1.txt ....bis Test27.txt) auftauchen?
2) was passiert nach dem Einlesen der Text.txt? Wird die gelöscht von der Applikation?
Oder wie kann ein neuer Batch erkennen, dass die Daten aus (Text1.txt ...Text27.txt) bereits in die Text1.txt kopiert wurden
3) wenn die Appz mehr als einen Datensatz einlesen kann, warum werden dann nicht gleich immer neue DS an Text.txt angefügt?

Grüße
Biber
Member: p4linux
p4linux Feb 20, 2008 at 09:46:31 (UTC)
Goto Top
Hallo Biber,

unsere Anwendung ist recht schlecht programmiert! ;)

Die Anwendung ließt immer nur die Dateien ein die Test.txt heißen! Die Datei wird duch ein Zeiterfassungsterminal generiert, dh. ein Mitarbeiter stempelt an der Stempeluhr --> es entsteht eine Textdatei Test.txt. Unsere Anwendung schaut jede Sekunde in den Ordner ob es solch eine Datei gibt. Wenn ja dann wird sie eingelesen und aus dem Tempordner gelöscht.

Stempelt aber ein anderer Mitarbeiter quasi gleichzeitig und die Test.txt wurde noch nicht eingelesen
bekommt der neue Datensatz den Namen Test1.txt usw...
Member: Biber
Biber Feb 20, 2008 at 09:55:10 (UTC)
Goto Top
Moin p4linux,

okay, und die wichtige Frage: darf denn mehr als ein Datensatz in der Text.txt stehen?
Weiß das jemand??

Grüße
Biber
Member: p4linux
p4linux Feb 20, 2008 at 09:59:09 (UTC)
Goto Top
ja, es dürfen mehrere Datensätze in der Textdatei stehen, wichtig dabei ist nur das diese durch Zeileumbruch getrennt sind!
Member: Biber
Biber Feb 20, 2008 at 19:16:33 (UTC)
Goto Top
...ich weiß nicht, p4linux,

ich drücke mich schon seit Stunden vor einer "Lösung", weil...

  • solange einerseits die Test.txt sekündlich gelesen/gelöscht werden kann und
  • andererseits ebenso sekündlich neue TestNN.txt nachgeschoben werden können von einer Applikation, die genauso die Existenz/Nichtexistenz der Test.txt prüft....

Ist nur Flickwerk, sich dazwischendrängeln zu wollen.

Prio 1 hätte die Prüfung, ob
a) Eure Appz auch an die vorhandene test.txt mehrere Sätze anhängen kann.
Ggf. muss dann eben von der lesenden+löschenden Seite einerseits und der neu schreibenden Seite andererseits über eine Semaphore/eine Flag-Datei signalisiert werden, wer gerade die Test.txt haben will
b) solltet ihr prüfen, ob dieses sofortige Abholen der Daten denn Sinn macht oder ob es sich über Zeitfenster regeln lässt (z.b. gesammelt in der Test.txt wird in jeder Stunde von x:00 bis x:50. Abgeholt und anschließend gelöscht wird jede Stunde um x:55
Das kann doch nicht sein, dass diese Stechkarten-Appz nicht in der Lage ist, erstmal ein paar Sätze zu cachen.... das ist ja wirklich albern, für jeweils eine Halbzeile eine datei zu schreiben.
c) solltet ihr euch mit neueren Entwicklungen (Prozesskommunikation, Listener..) vetraut machen - eine Prozessmimik über eine Datei-Liefern-Abholen-und-Löschen-Strategie in der o.a. Sekundentaktung ist ..hmmmmmmmmmm.. ungewöhnlich.

Ich halte mich da erstmal mit "copy test*.txt alltest.txt"-Ansätzen zurück.

Grüße
Biber
Member: p4linux
p4linux Feb 21, 2008 at 14:26:58 (UTC)
Goto Top
Hallo Biber,

um eine Echtzeitanwendung zu Garantieren ist dieses vorgehen des sek.genauen Einlesens ein muss. Aber ob du glaubst oder nicht!

Dein letzter Beitag hat all meine Probleme gelöst ;) und das nur mit einem popligen Copybefehl.

Ich kopiere jetzt den Inhalt aller Dateien in eine Textdatei und lösche alle anderen Test*.txt Dateien aus diesem verzeichnis heraus. Es bleibt eine über, ich lese Sie in die Datenbank ein..... und alle sind zufrieden.

Nochmals vielen Dank!

P.S wir werden aber mit unserer Entwicklung den Programmcode in folgender hinsicht ändern, dass alle Test*.txt Dateien ausgelesen und sofort in die Datenbank geschrieben werden!

Gruß p4linux