PDA

View Full Version : CPYTOIMPF erzeugt Datensätze in falscher Reihenfolge



itec01
03-05-22, 09:17
Hallo Zusammen,
wir hatten ein ganz seltsames Phänomen.
Die Datensätze stehen in falscher Reihenfolge in der IFS Datei.


CPYTOIMPF FROMFILE(EVRWRKP)
TOSTMF('/SPAREPARTS/DISTRIB/MSC/IVV/DEALER/DLR_00_001412_20220430.CSV')
MBROPT(*REPLACE) STMFCODPAG(*PCASCII) RCDDLM(*CRLF) DTAFMT(*DLM)
STRDLM(*NONE) STRESCCHR(*NONE) RMVBLANK(*BOTH) FLDDLM(';')

Ich habe mir das Journal der Basis Datei angeschaut, hier stimmt alles.
Im Joblog ist nichts zu erkennen.

Beispiel:
So steht es im Journal der Basidatei
"date of issue";"sequ...
22/04/30;"001412";"";
22/04/30;"001412";"";
22/04/30;"001412";"";
22/04/30;"001412";"";

Output IFS
22/04/30;"001412";"";
22/04/30;"001412";"";
"date of issue";"sequ...
22/04/30;"001412";"";
22/04/30;"001412";"";

Das ist bei 23 von 50 File Transfers passiert.
Heute Nacht lief alles wieder sauber durch.

Ich habe echt keine Idee was hier passiert sein soll, zumal der Ablauf schon gefühlte hundert Jahre ohne Probleme läuft.

Danke schon mal.

Gruß Klaus

RobertMack
03-05-22, 10:15
REUSEDLT auf Datei EVRWRKP auf *YES?

Fuerchau
03-05-22, 10:24
CPYTOIMPF liest die Quelle nach Satzfolge der Tabelle, eine Sortierung ist da nicht vorgesehen.
Bei einer SQL-Table steht REUSEDLT immer auf *YES und kann auch nicht geändert werden.
Allerdings ist die Sortierung einer CSV-Datei i.d.R. nicht erforderlich.

Wenn du eine Sortierung benötgst kannst du einen RUNSQL "create table as select..." mit der nötigen Sortierfolge vorher laufen lassen und aus der sortierten Tabelle exportieren.

itec01
03-05-22, 10:33
CPYTOIMPF liest die Quelle nach Satzfolge der Tabelle, eine Sortierung ist da nicht vorgesehen.
Bei einer SQL-Table steht REUSEDLT immer auf *YES und kann auch nicht geändert werden.
Allerdings ist die Sortierung einer CSV-Datei i.d.R. nicht erforderlich.

Wenn du eine Sortierung benötgst kannst du einen RUNSQL "create table as select..." mit der nötigen Sortierfolge vorher laufen lassen und aus der sortierten Tabelle exportieren.

Reusedlt sitzt auf *NO.
Lt. Journal passt ja die Satzreihenfolge, aber irgendwie hat es nicht gepasst. Der Header zum Beispiel war in den 23 Dateien ganz sporadisch immer wo anders.

Fuerchau
03-05-22, 10:44
Wenn du von den betroffenen Dateien einen einfachen Select machst, sollte die Satztfolge verwendet werden, falls nicht kannst du auch einen "order by rrn(tabelle)" verwenden.
Es kann durchaus auch ein Erstellungsproblem im Programm sein, dass der "Header" eben erst nach den "Positionen" geschrieben wurde.

itec01
03-05-22, 14:31
Der Header wurde definitiv als erstes geschrieben.
Im CPYTOIMPF gibt es den Parameter ORDERBY *ARRIVAL.
Aktuell haben wir ORDERBY *NONE.
Soll ich den auf *ARRIVAL ändern oder gibt es dann eventuell andere Probleme?

Eventuell greift bei *NONE der optimizer and da wissen wir ja was der kann.

Gruß

Fuerchau
03-05-22, 14:49
Nunj, kommt drauf an ob die Table einen Key enthält.
Es wird immerhin SQL verwendet, und da könnte die Sortierung nach Schlüssel vorrangig sein.
*ARRIVAL ist theoretisch die Eingangsfolge, sprich RRN:
"The records will be inserted in the order they were inserted into the from file."
Bei einer Temporal-Tabelle könnte die Entstehung tatsächlich gemeint sein.

Wenn deine Tabelle aber einen sortierfähigen Schlüssel hat, solltest du besser sortiert arbeiten, was ja nun auch ohne kopieren geht.

Mach doch mal einen "select * from table order by rrn(table)" obs passt.