Autor Thema: Import erst beginnen wenn Importdatei komplett downgeloaded ist  (Gelesen 5647 mal)

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Hallo,
ich lade eine Datei vom Host und importiere diese dann in eine db.
Wenn die Datei eine grösse x hat, beginnt der Import schon obwohl die Datei noch nicht komplett ist. Das führt dazu das nur ein Teil der Datei importiert wird. Um dies zu verhindern habe ich zwischen dem download und dem import eine Sleep Anweisung. (Sleep(60)
Das ist nicht sehr ellegant da immer, auch bei einer kleinen Datei, gewartet wird.
Gibt es eine Möglichkeit dies anders zu lösen??

Danke Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Wie holst Du Dir denn die DB ? Im selben LS-Agent ?

Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Ich bin in der db und starte den Download & Import manuell durch klick auf Button.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hm, ich habe meine Frage sehr ungenau gestellt, sorry. Ich gehe aber jetzt mal davon aus, das in einem Agent sowohl der Export aus der Host-DB ausgeführt wird als auch der Import aus dem eben importierten File.

Normalerweise sollte es dabei eigentlich keine Überschneidungen geben, da Dein Code ja record by record die Daten vom Host holt. Vielleicht hast Du hier aber auch ein Add-on am Laufen. Wie gesagt - da sind Deine Infos gefragt.

Was Du aber machen kannst: In einer Schleife überprüfen (mit einem Sleep meanwhile), ob Dein Import-File noch wächst. Wenn dies nach n Durchläufen (das muss dann auf Deiner Erfahrung beruhen) nicht mehr passiert, verlässt Du die Schleife.

Nur so als Idee ...

Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Hallo Bernhard,
nochmal kurz zum Ablauf.
Aus unserem "Freigabe" - System kann man sich z.B. mit TSO verschiedene Daten ziehen. Außerdem stellt das System verschiedene Reports zur Verfügung.Was ich nun mache ist, einen
dieser Reports mittels FTP in eine Datei auf meinen Rechner zu speichern. Diese Datei ist innerhalb weniger Sekunden downgeloaded. Die größe ist ca. 6kb. ca. 3 Din A4 Seiten.
Nach dem Download wird dann die Datei geöffnet, Zeile für Zeile eingelesen und die Daten der Zeilen in die entsprechenden Felder geschrieben. Als ich letztes Jahr mit der Db angefangen hatte habe ich am Anfang beobachtet das nicht alle Daten in die Db importiert wurden, obwohl die Datei korrekt vom Host gezogen wurde. Meine Schlussfolgerung war dann das obwohl die Datei noch nicht komplett ist der Import schon beginnt. Habe ich dann durch einfügen von Sleep abgefangen.
Ich hoffe es ist jetzt ein wenig klarer.
Aber Dein Vorschlag geht in die richtige Richtung. Meine Idee war (wenn möglich) abzufragen wenn die Datei "geschlossen" wird und  dann mit Import fortfahren. Wo finde ich eigentlich Sleep meanwhile??
Danke und gruss
Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hallo, Boris,

Sleep meanwhile findest Du nirgendwo in Notes.
Du holst Dir also die Datei via FTP, und das per Hand ? Das hat nix mit Notes zu tun ? Dann brauchst Du doch nur ein wenig geduldig zu sein  ;D

Um auf Nummer Sicher zu gehen, kannst Du ja noch meinen Vorschlag berücksichtigen und in einer Schleife vor Import-Start immer wieder prüfen (so lange, wie Deine Erfahrungswerte dies für angezeigt halten), ob die Filegrösse sich noch verändert. Aber wenn Du das sowieso manuell nacheinander anstösst, wäre dies ja eigentlich obsolet ...
Wenn Du aber EINEN Agent hast, der erst per FTP das File holt und als nächsten Schritt das File auswertet, würde ich Dir meinen Tip durchaus ans Herz legen.

HTH,
Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Bernhard die ganze Geschichte ist in einem Agenten drin dieser wird gestartet und in null komma weisnichtwas sind die daten in der Notes db. Muss mir jetzt erstmal die nötigen Infos aus der Hilfe suchen komme dann nochmal darauf zurück.

Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Jetzt mal Butter an die Fische:
- Es ist EIN Agent ?
- Der Agent holt sich erst per FTP die Export-Datei nach lokal und
- wertet diese dann zwecks Import nach Notes aus ?

Ciao,
Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Yes.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Dann beobachte nach dem Absetzen des FTP commands die Filegroesse, bis sie sich in einem relevaten (sleep-)Zeitrahmen nicht mehr verändert.
Vergiss aber einen Notausstieg nicht - nach n Sekunden sollte ja der FTP-Transfer allemal abgeschlossen sein.

HTH,
Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #10 am: 07.04.04 - 23:38:38 »
Andere Idee: In der letzten Zeile des Reports steht "END OF LIST".
Kann ich an das Ende der Datei gehen und dann wieder 11 Zeichen zurück ob dort END OF LIST steht??

Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #11 am: 07.04.04 - 23:44:56 »
Jo, das geht, ohne weiteres (zumindest das "END OF LIST" ermitteln, im Import-Stream zurückgehen aber nicht) und ist eine sehr gute Idee (insofern sichergestellt ist, das "END OF LIST" der garantierte Abschluss des Exports ist, aber das sollte ja unbedingt so sein).

Aber nicht mehr heute Nacht ... Ich mag jetzt noch was gutes lesen, was nix mit Notes zu tun hat. Kathy Reichs, "Knochenarbeit".

Gute Nacht,

Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #12 am: 07.04.04 - 23:58:20 »
Gute Nacht.

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #13 am: 09.04.04 - 18:27:12 »
Wie komme ich nun ans Ende der Datei??
Gibt es da so etwas wie GOTO EOF??
Oder muss ich jede Zeile einlesen und prüfen ob dort END OF LIST
steht??

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #14 am: 09.04.04 - 20:00:10 »
Ihr habt offensichtlich eine spezifische Ausgabe Eurer Daten in ein File. Daher ist es auch (offensichtlich) nicht möglich, einen bestimmten Record (eben den letzten) anzuspringen.
Da die Grösse Eures Exports recht übersichtlich ist, würde ich daher wie folgt vorgehen:
- In einer (abbrechbaren) Schleife prüfen, ob das Exportfile noch wächst.
- Wenn nicht mehr, dann das Exportfile komplett lesen und auf die "abschliessenden Worte" (END OF FILE) prüfen.
- An dieser Stelle weiter entscheiden: Alles auf Anfang oder den Import starten.

Mit mehr Output Deinerseits liessen sich vielleicht auch noch andere Verfahren debattieren.

Ciao,
Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #15 am: 10.04.04 - 00:48:17 »
Hallo Bernhard,
der Report sieht so aus:
105.04.04 18:54    ARBEITSANWEISUNG FUER KATALOG-ABTEILUNG      BLATT      1    
0 SERVICE-NR  KATALOG    KATALOG-NAME                OP PROJ  AUTHORITY   CTCN  
0------------------------------------------------------------------------------
0    93183617  01 83     FASSUNGSSCHIENE LINKS       JL      EPL03295          
0    93183618  01 83     FASSUNGSSCHIENE LINKS       JL      EPL03295  

0                                                          END OF LIST 18:54    
Die ersten 3 Zeilen bis zu 0---------------------------
sind der Kopf danach kommen auf Seite 1; 29 Zeilen mit Daten.
Dann wieder der Kopf und ab Seite 2; 30 Zeilen mit den Daten.
Und am Ende dann die Zeile mit END OF LIST und einer Uhrzeit.

Ausser der ersten Zeile im Kopf beginnen alle anderen mit einer 0.
Die erste Zeile beginnt mit einer 1.

Das ist eigentlich alles was es zum Report zu sagen gibt.
Boris
         

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #16 am: 10.04.04 - 09:27:45 »
ich weiß nicht, wie du die datei holst.
aber wenn du das nicht mit LotusScript machst, sondern mit einer anderen Applikation (wget oder sowas) dann könntest du prüfen, ob deren Prozess noch läuft.

aus eknoris Schatzkiste:
http://eknori.dyndns.org/knowledge/devidea.nsf/a8c119998eca3ab4c1256c97005c7805?OpenView
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Axel Janssen temp

  • Gast
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #17 am: 10.04.04 - 13:02:12 »
Hi,

nur so am Rande, aber das waere ein moeglicher Einsatz fuer Java
Wenn ich dich richtig verstehe, startest du das FTP als externen Prozess, mit execute oder wie auch immer.

Mit Java1.1 kannst du den ftp download irekt in deinem code ausfuehren und hast somit eine konkrete Kontrolle, wann der download abgeschlossen ist.

Bei Interesse versuche google java.net. ftp java1.1

Gruss Axel


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #18 am: 10.04.04 - 13:19:05 »
Shagadelic!

Man kann eigentlich sagen, dass für so ziemlich alle Dateioperationen, die du in Notes durchführen willst, Java das geeignetste Mittel ist.
Da zeigt sich, dass Java im vergleich zu LotusScript eine "gescheite" Programmiersprache ist.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Import erst beginnen wenn Importdatei komplett downgeloaded ist
« Antwort #19 am: 12.04.04 - 14:58:16 »
Also ich habe es jetzt, naja etwas "primitiv" gelöst.
Ich lese die datei komplett ein gehe am Ende 23 zeichen zurück und prüfe ob dort die ersten 11 Zeichen "END OF LIST" sind.
Werde nächste Woche testen ob das Ok ist. Evt. werde ich später mal probieren ob ichs anders hin bekomme.
Auf alle Fälle vielen Dank für Eure Hilfe.

Boris

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz