PDA

View Full Version : CPYF mit unterschiedlicher Anzahl Felder



SabineK
24-11-14, 09:48
Hallo Leute,

ich möchte gerne aus meinen Reorg-Dateien ein paar Sätze wiederherstellen und diese per CPYF an die Originaldatei anhängen. Die Sätze habe ich schon rausgeholt, aber die Reorgdateien haben 7 Felder mehr.

Weiß jemand, ob es reicht, wenn ich die Optionen *MAP und *DROP verwende oder zerschieße ich mir damit die Datenbank?

Viele Grüße,

Sabine

dschroeder
24-11-14, 09:59
Hallo Sabine,
soweit ich mich erinnern kann, geht das mit MAP/DROP problemlos. Wichtig ist, dass alle Felder, die in beiden Dateien vorhanden sind (also die *MAP Felder), den gleichen Typ haben.

Wenn dir das zu unsicher ist, kannst du ja auch SQL nehmen. Insert into ... select ... from

Da kannst du alle Felder einzeln angeben.

Dieter

BenderD
24-11-14, 10:06
... ob Du Dir damit die Datenbank zerschießt, das kann Dir aus der Ferne niemand wirklich beantworten, das hängt doch von den Daten ab und eventuell auch von den Beziehungen untereinander.
In jedem Fall empfiehlt es sich bei solchen Aktionen die Datei mit STRJRNPF zu jornalisieren und die Aktion in einer SQL session, die man mit commit startet (STRSQL mal mit F4 prompten); dann kann man die Daten mit insert reinschieben, dann kontrolliern, wenn es passt commit, war es nix rollback. Und nicht vergessen alles genau zu dokumentieren, falls man erst in ein paar Tagen merkt, dass diese Aktion nur die zweitbeste Idee war.

D*B

Pikachu
24-11-14, 11:07
Wichtig ist noch der Parameter MBROPT(*ADD) beim CPYF, damit die Sätze auch hinzugefügt werden.

SabineK
24-11-14, 11:22
Ja, den *add schreib ich immer als erstes rein (bevor ich irgendwelche Namen eintrage).
Ich probier dann mal den insert, scheint mir am sichersten.

Ich danke Euch,

LG, Sabine

TheDevil
24-11-14, 12:41
Hi,
und falls ein Key auf der / die Datei / en liegen Vorsicht. Nehmen wir ma an das es sich um Auftragsdateien (Kopf/Position) handelt und nach dem Reort wurden auch dort evtl. Felder wieder auf 1 (Auftragsnummer) gesetzt und aus den REORT Dateien sollen nun diese wieder angefügt werden geht das nicht. Es kann sogar sein das dann evtl. bei der Positionsdatei Sätze mit höheren Positionnummern in die Originaldatei eingefügt werden und man somit völlig verkehrte Auftragsdateien erhällt !
Gruß,
Ralf

Fuerchau
24-11-14, 17:07
Ob du nun CPYF *MAP *DROP oder den SQL-Insert nimmst ändert am Risiko nichts, nur das Verfahren ist halt ein anderes.

BenderD
24-11-14, 19:18
... das sehe ich etwas anders, da gibt es schon beträchtliche Unterschiede:
Risiken CPYF
- *REPLACE putzt alles
- keine rollback Unterstützung
- kein where exists möglich
Risiken insert into select
- kein automatisches *MAP *DROP (falsche Feldlisten können Murks verursachen)
- Abbrüche wg. dupkey unkontrolliert

Ich habe insert select empfohlen wg, der ROLLBACK Unterstützung und halte das für das überwiegende Argument, trotz der Feldlisten Problematik.

D*B