Beispiel für LOAD-Steueranweisungen

Verwenden Sie die Beispiel-Steueranweisungen als Vorlage für die Entwicklung Ihrer eigenen LOAD-Steueranweisungen.

Festlegen der Feldpositionen

Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm die Datensätze aus dem Datensatz, der durch die SYSREC DD-Anweisung definiert ist, in die Tabelle DSN8810.DEPT laden soll. SYSREC ist der Standard-Eingabedatensatz.

Jede POSITION-Klausel gibt die Position eines Feldes im Eingabedatensatz an. In diesem Beispiel akzeptiert LOAD die Eingabe und interpretiert sie wie folgt:

  • Die ersten 3 Bytes jedes Datensatzes werden in die Spalte DEPTNO der Tabelle geladen.
  • Die nächsten 36 Bytes, einschließlich der abschließenden Leerzeichen, werden in die Spalte DEPTNAME geladen.

    Wenn diese Eingabespalte als VARCHAR(36) definiert wäre, müssten die Eingabedaten ein 2-Byte-Binärlängenfeld enthalten, das den Daten vorausgeht. Dieses binäre Feld würde bei Position 4 beginnen.

  • Die nächsten drei Felder werden in Spalten geladen, die als CHAR(6), CHAR(3) und CHAR(16) definiert sind.

Die RESUME YES-Klausel legt fest, dass der Tabellenbereich nicht leer sein muss; neue Datensätze werden am Ende der Tabelle hinzugefügt.

LOAD DATA
 RESUME YES
 INTO TABLE DSN8C10.DEPT
 (DEPTNO    POSITION (1:3)     CHAR(3),
    DEPTNAME POSITION (4:39)    CHAR(36),
    MGRNO     POSITION (40:45)   CHAR(6),
    ADMRDEPT POSITION (46:48)   CHAR(3),
    LOCATION POSITION (49:64)   CHAR(16))

Das folgende Beispiel zeigt die Eingabe für den vorherigen LOAD-Job.

A00SPIFFY COMPUTER SERVICE DIV.        000010A00USIBMSTODB21
B01PLANNING                            000020A00USIBMSTODB21
C01INFORMATION CENTER                  000030A00USIBMSTODB21
D01DEVELOPMENT CENTER                        A00USIBMSTODB21

Die folgende Tabelle zeigt das Ergebnis der Ausführung der Anweisung SELECT * FROM DSN8C10. DEPT, nachdem die vorhergehenden Eingabedatensätze geladen wurden.


Tabelle 1. Daten, die in eine Tabelle geladen werden
DEPTNO KBEZ MGRNO ADMRDEPT POSITION
A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 USIBMSTODB21
B01 PLANNING 000020 A00 USIBMSTODB21
C01 INFORMATION CENTER 000030 A00 USIBMSTODB21
D01 DEVELOPMENT CENTER   A00 USIBMSTODB21

Ersetzen von Daten in einer bestimmten Partition

Die folgende Steueranweisung gibt an, dass Daten aus dem Datensatz, der durch die SYSREC DD-Anweisung definiert ist, in die erste Partition der Tabelle DSN8810.DEPT geladen werden sollen. Der Standard-Eingabedatensatz ist SYSREC. Die Option "REPLACE" gibt an, dass die Eingabedaten nur die angegebene Partition ersetzen sollen. Wenn die Option REPLACE vor der Option PART angegeben wurde, gibt REPLACE an, dass der gesamte Tabellenbereich ersetzt werden soll und die Daten in die angegebene Partition geladen werden sollen. Beachten Sie, dass das Schlüsselwort DATA nicht angegeben werden muss.

LOAD 
  INTO TABLE DSN8C10.DEPT PART 1 REPLACE

Ausgewählte Datensätze in mehrere Tabellen laden

Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm bestimmte Daten aus dem EMPLDS -Eingabedatensatz in die Tabellen DSN8C10.EMP, SMITH.EMPEMPL und DSN8810.DEPT laden soll. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Die WHEN-Klauseln geben an, welche Datensätze in jede Tabelle geladen werden sollen. Für die Tabellen EMP und DEPT besteht der Nutzen darin, nur Datensätze zu laden, die mit der Zeichenfolge LKA beginnen. Für die EMPEMPL-Tabelle besteht der Nutzen darin, nur Datensätze zu laden, die mit der Zeichenkette ABC beginnen. Die Option "YES" gibt an, dass der Tabellenbereich nicht leer sein muss, damit der LOAD-Job fortgesetzt werden kann. Die neuen Zeilen werden am Ende der Tabellen hinzugefügt. In diesem Beispiel wird davon ausgegangen, dass die ersten beiden zu ladenden Tabellen genau dasselbe Format haben und dass die Eingabedaten diesem Format entsprechen. Daher sind für diese beiden INTO TABLE-Klauseln keine Feldspezifikationen erforderlich. Die dritte Tabelle hat ein anderes Format, sodass Feldspezifikationen erforderlich sind und im Beispiel bereitgestellt werden.

Die drei zu ladenden Tabellen enthalten jeweils eine unterschiedliche Anzahl von Datensätzen. Um die Größe der Sortierarbeitsdatensätze zu verbessern, die das LOAD-Dienstprogramm benötigt, wird die Anzahl der Datensätze, die in jede Tabelle geladen werden, für jede Tabelle im Schlüsselwort NUMRECS angegeben.

Die POSITION-Klauseln geben die Position der Felder in den Eingabedaten für die DEPT-Tabelle an. Für jeden Quelldatensatz, der in die DEPT-Tabelle geladen werden soll:

  • Die Zeichen in den Positionen 7–9 werden in die Spalte DEPTNO geladen.
  • Die Zeichen in den Positionen 10–35 werden in die Spalte DEPTNAME geladen.
  • Die Zeichen in den Positionen 36–41 werden in die Spalte MGRNO geladen.
  • Die Zeichen in den Positionen 42–44 werden in die Spalte ADMRDEPT geladen.
LOAD DATA INDDN EMPLDS
 RESUME YES
 INTO TABLE DSN8C10.EMP
 NUMRECS   100000
 WHEN (1:3)='LKA'
 INTO TABLE SMITH.EMPEMPL
 NUMRECS   100
 WHEN (1:3)='ABC'
 INTO TABLE DSN8C10.DEPT 
 NUMRECS   500
 WHEN (1:3)='LKA'
 (DEPTNO POSITION (7:9) CHAR,
   DEPTNAME POSITION (10:35) CHAR,
   MGRNO POSITION (36:41) CHAR,
   ADMRDEPT POSITION (42:44) CHAR)

Laden von Daten verschiedener Datentypen

Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm Daten aus dem SYSRECPJ-Eingabedatensatz in die Tabelle DSN8C10.PROJ laden soll. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Angenommen, der Tabellenbereich, der die Tabelle DSN8C10.PROJ enthält, ist derzeit leer.

Für jeden Eingabedatensatz werden Daten in die angegebenen Spalten (d. h. PROJNO, PROJNAME, DEPTNO usw.) geladen, um eine Tabellenzeile zu bilden. Alle anderen PROJ-Spalten, die nicht in der LOAD-Steueranweisung angegeben sind, werden auf den Standardwert gesetzt.

Die POSITION-Klauseln definieren die Startpositionen der Felder im Eingabedatensatz. Die Endpositionen der Felder im Eingabedatensatz werden implizit entweder durch die Längenangabe des Datentyps (CHAR-Länge ) oder die Längenangabe des externen numerischen Datentyps (LÄNGE) definiert.

Die numerischen Daten, die im SQL-Konstantenformat (EXTERNAL-Format) dargestellt werden, werden vom LOAD-Prozess in das richtige interne Format konvertiert und in den angegebenen Spaltennamen platziert. Es wird davon ausgegangen, dass die beiden Daten (PRSTDATE und PRENDATE) durch acht Ziffern und zwei Trennzeichen dargestellt werden, wie im USA-Format (z. B. 15.11.2006). Die Länge der Datumsfelder wird ausdrücklich mit 10 angegeben, obwohl in vielen Fällen der Standardwert derselbe ist.

LOAD DATA INDDN(SYSRECPJ)
 INTO TABLE DSN8C10.PROJ
  (PROJNO   POSITION  (1) CHAR(6),
   PROJNAME POSITION  (8) CHAR(22),
   DEPTNO   POSITION (31) CHAR(3),
   RESPEMP  POSITION (35) CHAR(6),
   PRSTAFF  POSITION (42) DECIMAL EXTERNAL(5),
   PRSTDATE POSITION (48) DATE EXTERNAL(10),
   PRENDATE POSITION (59) DATE EXTERNAL(10),
   MAJPROJ  POSITION (70) CHAR(6))

Laden von Daten im Format "getrennte Werte"

Die Steueranweisung gibt an, dass Daten im Format mit Trennzeichen in die angegebenen Spalten (FILENO, DATE1, TIME1 und TIMESTMP) in der Tabelle TBQB0103 geladen werden sollen. Die Option "FORMAT DELIMITED" gibt an, dass die Daten im Format "delimited" vorliegen. Die Daten werden standardmäßig aus dem SYSREC-Datensatz geladen.

Die Option COLDEL gibt an, dass das Spaltentrennzeichen ein Komma (,) ist. Die Option CHARDEL gibt an, dass das Trennzeichen für die Zeichenkette ein doppeltes Anführungszeichen (") ist. Die Option DECPT gibt an, dass das Dezimalzeichen ein Punkt (.) ist. Sie müssen diese Zeichen nicht explizit angeben, da es sich bei allen um Standardzeichen handelt.

//*                              
//STEP3    EXEC DSNUPROC,UID='JUQBU101.LOAD2',TIME=1440,     
//         UTPROC='',                                        
//         SYSTEM='SSTR'                         
//SYSERR   DD DSN=JUQBU101.LOAD2.STEP3.SYSERR,               
//         DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,               
//         SPACE=(4096,(20,20),,,ROUND)                      
//SYSDISC  DD DSN=JUQBU101.LOAD2.STEP3.SYSDISC,              
//         DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,               
//         SPACE=(4096,(20,20),,,ROUND)                      
//SYSMAP   DD DSN=JUQBU101.LOAD2.STEP3.SYSMAP,               
//         DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,               
//         SPACE=(4096,(20,20),,,ROUND)                      
//SYSUT1   DD DSN=JUQBU101.LOAD2.STEP3.SYSUT1,               
//         DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,               
//         SPACE=(4096,(20,20),,,ROUND) 
//UTPRINT  DD SYSOUT=*                                        
//SORTOUT  DD DSN=JUQBU101.LOAD2.STEP3.SORTOUT,               
//         DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,                
//         SPACE=(4096,(20,20),,,ROUND)                       
//SYSIN    DD *                                              
   LOAD DATA                                                   
        FORMAT DELIMITED COLDEL ',' CHARDEL '"' DECPT '.'      
        INTO TABLE TBQB0103                                    
            (FILENO   CHAR,                                    
             DATE1    DATE EXTERNAL,                           
             TIME1    TIME EXTERNAL,                           
             TIMESTMP TIMESTAMP EXTERNAL)                      
 /*                                                            
//SYSREC   DD *                                               
 "001", 2000-02-16, 00.00.00, 2000-02-16-00.00.00.0000         
 "002", 2001-04-17, 06.30.00, 2001-04-17-06.30.00.2000         
 "003", 2002-06-18, 12.30.59, 2002-06-18-12.30.59.4000         
 "004", 1991-08-19, 18.59.30, 1991-08-19-18.59.30.8000         
 "005", 2000-12-20, 24.00.00, 2000-12-20-24.00.00.0000         
 /*

Verknüpfung mehrerer Eingabedatensätze

Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECOV-Eingabedatensatz in die Tabelle DSN8C10.TOPTVAL geladen werden sollen. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Der Tabellenbereich, der die TOPTVAL-Tabelle enthält, ist derzeit leer.

Einige der Daten, die in eine einzelne Zeile geladen werden sollen, erstrecken sich über mehr als einen Eingabedatensatz. In dieser Situation zeigt ein X in Spalte 72 an, dass der Eingabedatensatz Felder enthält, die in dieselbe Zeile geladen werden sollen wie die Felder im nächsten Eingabedatensatz. In der LOAD-Steuerungsanweisung gibt CONTINUEIF(72:72)='X' an, dass LOAD alle Eingabedatensätze, die in Spalte 72 ein X enthalten, mit dem nächsten Datensatz verketten soll, bevor die Daten geladen werden.

Für jeden zusammengestellten Eingabedatensatz (d. h. nach der Verkettung) werden Felder in die Spalten der DSN8C10.TOPTVAL-Tabelle geladen (d. h. MAJSYS, ACTION, OBJECT... DSPINDEX), um eine Tabellenzeile zu bilden. Alle Spalten, die nicht in der LOAD-Steuerungsanweisung angegeben sind, werden auf den Standardwert gesetzt.

Die POSITION-Klauseln definieren die Startpositionen der Felder in den zusammengesetzten Eingabedatensätzen. Die Startpositionen werden ab der ersten Spalte des intern zusammengestellten Eingabedatensatzes nummeriert, nicht ab dem Beginn der Eingabedatensätze im sequenziellen Datensatz. Die Endpositionen der Felder werden implizit durch die Längenangabe des Datentyps (CHAR-Länge ) definiert.

Es sind keine Konvertierungen erforderlich, um die eingegebenen Zeichenketten in die dafür vorgesehenen Spalten zu laden, die ebenfalls als Zeichenketten mit fester Länge definiert sind. Da die Spalten INFOTXT, HELPTXT und PFKTXT jedoch eine Länge von 79 Zeichen haben und die zu ladenden Zeichenketten eine Länge von 71 Zeichen haben, werden diese Zeichenketten beim Laden mit Leerzeichen aufgefüllt.

LOAD DATA INDDN(SYSRECOV) CONTINUEIF(72:72)='X'
  INTO TABLE DSN8C10.TOPTVAL
  (MAJSYS   POSITION   (2) CHAR(1),
   ACTION   POSITION   (4) CHAR(1),
   OBJECT   POSITION   (6) CHAR(2),
   SRCHCRIT POSITION   (9) CHAR(2),
   SCRTYPE  POSITION  (12) CHAR(1),
   HEADTXT  POSITION  (80) CHAR(50),
   SELTXT   POSITION (159) CHAR(50),
   INFOTXT  POSITION (238) CHAR(71),
   HELPTXT  POSITION (317) CHAR(71),
   PFKTXT   POSITION (396) CHAR(71),
   DSPINDEX POSITION (475) CHAR(2))

Laden von Nullwerten

Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECST-Datensatz in die angegebenen Spalten in der Tabelle SYSIBM.SYSSTRINGS geladen werden sollen. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Die Option NULLIF für die Spalten ERRORBYTE und SUBBYTE gibt an, dass LOAD einen Nullwert in die angegebene Spalte für diese bestimmte Zeile einfügt, wenn das Eingabefeld ein Leerzeichen enthält. Die Option DEFAULTIF für die Spalte TRANSTAB gibt an, dass das Dienstprogramm den Standardwert für diese Spalte laden soll, wenn der Wert des Eingabefelds GG ist. Die Option CONTINUEIF gibt an, dass LOAD alle Eingabedatensätze, die in Spalte 80 ein X enthalten, mit dem nächsten Datensatz verknüpfen soll, bevor die Daten geladen werden.

LOAD DATA INDDN(SYSRECST) CONTINUEIF(80:80)='X' RESUME(YES)      
     INTO TABLE SYSIBM.SYSSTRINGS                                
           (INCCSID   POSITION(  1) INTEGER EXTERNAL(5),          
            OUTCCSID  POSITION(  7) INTEGER EXTERNAL(5),          
            TRANSTYPE POSITION( 13) CHAR(2),                      
            ERRORBYTE POSITION( 16) CHAR(1) NULLIF(ERRORBYTE=' '),
            SUBBYTE   POSITION( 18) CHAR(1) NULLIF(SUBBYTE=' '),  
            TRANSPROC POSITION( 20) CHAR(8),                      
            IBMREQD   POSITION( 29) CHAR(1),                      
            TRANSTAB  POSITION( 31) CHAR(256) DEFAULTIF(TRANSTYPE='GG'))

Durchsetzung von Referenzbeschränkungen beim Laden von Daten

Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSREC-Eingabedatensatz in die Tabelle DSN8C10.PROJ geladen werden sollen. Der Standard-Eingabedatensatz ist SYSREC. Der Tabellenbereich, der die Tabelle PROJ enthält, ist nicht leer. "RESUME YES" gibt an, dass die Datensätze am Ende der Tabelle hinzugefügt werden sollen.

Die Option "ENFORCE CONSTRAINTS" gibt an, dass LOAD referenzielle Einschränkungen für die hinzugefügten Daten erzwingen soll. Diese Option ist auch die Standardeinstellung. Alle Verstöße werden in der Ausgabe gemeldet. Alle Datensätze, die diese Verstöße verursachen, werden nicht geladen und in den SYSDISC-Datensatz eingefügt, der der Standarddatensatz für verworfene Datensätze ist.

Die Option CONTINUEIF gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 72 ein X enthalten, mit dem nächsten Datensatz verketten soll.

LOAD DATA INDDN(SYSREC) CONTINUEIF(72:72)='X'
 RESUME YES
 ENFORCE CONSTRAINTS
 INTO TABLE DSN8C10.PROJ
  (PROJNO POSITION (1) CHAR (6),
   PROJNAME POSITION (8) VARCHAR,
   DEPTNO POSITION (33) CHAR (3),
   RESPEMP POSITION (37) CHAR (6),
   PRSTAFF POSITION (44) DECIMAL EXTERNAL (5),
   PRSTDATE POSITION (50) DATE EXTERNAL,
   PRENDATE POSITION (61) DATE EXTERNAL,
   MAJPROJ POSITION (80) CHAR (6) NULLIF(MAJPROJ='      '))

Laden von Daten ohne Durchsetzung von referenziellen Beschränkungen

Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECAC-Eingabedatensatz in die Tabelle DSN8810.ACT geladen werden sollen. Die INDDN-Option identifiziert den Eingabedatensatz.

ENFORCE NO gibt an, dass das Dienstprogramm LOAD keine referenziellen Beschränkungen erzwingen soll und die Tabelle in den Status CHECK-pending versetzt. Verwenden Sie diese Option, wenn Sie Daten in mehrere Tabellen laden, die so miteinander verknüpft sind, dass die referenziellen Einschränkungen erst überprüft werden können, wenn alle Tabellen geladen sind. Zum Beispiel hängt eine Spalte in Tabelle A von einer Spalte in Tabelle B ab; eine Spalte in Tabelle B hängt von einer Spalte in Tabelle C ab; und eine Spalte in Tabelle C hängt von einer Spalte in Tabelle A ab.

Die POSITION-Klauseln definieren die Startpositionen der Felder im Eingabedatensatz. Die Endpositionen der Felder im Eingabedatensatz werden implizit durch die Längenangabe des Datentyps (CHAR-Länge ) definiert. In diesem Fall werden die Zeichen in den Positionen 1 bis 3 in die Spalte ACTNO geladen, die Zeichen in den Positionen 5 bis 10 in die Spalte ACTKWD und die Zeichen ab Position 13 in die Spalte ACTDESC. Da die Spalte ACTDESC vom Typ VARCHAR ist, müssen die Eingabedaten ein 2-Byte-Binärfeld enthalten, das die Länge des Zeichenfelds angibt. Dieses binäre Feld beginnt an Position 13.

//STEP1    EXEC DSNUPROC,UID='IUIQU2UB.LOAD',
//         UTPROC='',
//         SYSTEM='DSN'
//SYSRECAC   DD DSN=IUIQU2UB.LOAD.DATA,DISP=SHR,VOL=SER=SCR03,
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1   DD DSN=IUIQU2UB.LOAD.STEP1.SYSUT1,
//         DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTOUT  DD DSN=IUIQU2UB.LOAD.STEP1.SORTOUT,
//         DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN    DD *
LOAD DATA INDDN(SYSRECAC) RESUME YES
     INTO TABLE DSN8C10.ACT
          (ACTNO    POSITION(1) INTEGER EXTERNAL(3),
           ACTKWD   POSITION(5) CHAR(6),
           ACTDESC POSITION(13) VARCHAR)
     ENFORCE NO
//*

Daten laden und einen parallelen Indexaufbau verwenden

Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSREC-Eingabedatensatz in die Tabelle DSN8810.DEPT geladen werden sollen. Angenommen , es müssen 22.000 Zeilen in die Tabelle DSN8C10.DEPT geladen werden, die über drei Indizes verfügt. In diesem Beispiel wird die Option SORTKEYS verwendet, um die Leistung zu verbessern, indem ein paralleler Indexaufbau erzwungen wird. Die Option SORTKEYS gibt 66.000 als Schätzwert für die Anzahl der Schlüssel an, die während der SORTBLD-Phase parallel sortiert werden sollen. (Diese Schätzung wurde anhand der unter "Verbesserung der LOAD-Leistung " beschriebenen Berechnung ermittelt.) Da mehr als ein Index erstellt werden muss, erstellt LOAD die Indizes parallel.

Die Schlüsselwörter SORTDEVT und SORTNUM geben an, dass das Sortierprogramm die erforderlichen Datensätze dynamisch zuweisen soll. Wenn ausreichend virtuelle Speicherressourcen verfügbar sind, wird ein Dienstprogramm-Unteraufgabenpaar gestartet, um jeden Index zu erstellen. Dieses Beispiel erfordert keine UTPRINnn DD-Anweisungen, da es DSNUPROC verwendet, um die Utility-Verarbeitung aufzurufen, die eine DD-Anweisung enthält, die UTPRINT SYSOUT zuweist.

Die Option CONTINUEIF gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 79 und Spalte 80 ein Pluszeichen (+) enthalten, mit dem nächsten Datensatz verketten soll.

//SAMPJOB  JOB  …
//STEP1    EXEC DSNUPROC,UID='SAMPJOB.LOAD',UTPROC='',SYSTEM='DSN'
//SORTOUT  DD DSN=SAMPJOB.LOAD.STEP1.SORTOUT,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(CYL,(10,20),,,ROUND)
//SYSUT1   DD DSN=SAMPJOB.LOAD.STEP1.SYSUT1,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(CYL,(10,20),,,ROUND)
//SYSERR   DD DSN=SAMPJOB.LOAD.STEP1.SYSERR,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(2000,(20,20),,,ROUND)
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=2400)
//SYSMAP   DD DSN=SAMPJOB.LOAD.STEP1.SYSMAP,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(2000,(20,20),,,ROUND),
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=2400)
//SYSREC   DSN=SAMPJOB.TEMP.DATA,DISP=SHR,UNIT=SYSDA
//SYSIN    DD *
LOAD DATA REPLACE INDDN SYSREC CONTINUEIF(79:80)='++'
 SORTKEYS 66000 SORTDEVT SYSDA SORTNUM 3
 INTO TABLE DSN8C10.DEPT
/*

Erstellen von Inline-Kopien mit der Option "REPLACE"

Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm Daten aus dem SYSREC-Datensatz in die angegebenen Spalten der Tabelle ADMF001.TB0S3902 laden soll.

COPYDDN( COPYT1 ) gibt an, dass LOAD Inline-Kopien erstellen und die primäre Bildkopie in den Datensatz schreiben soll, der durch die Vorlage COPYT1 definiert ist. Diese Vorlage ist in einer der vorangehenden TEMPLATE-Steueranweisungen definiert.

Um eine Inline-Kopie zu erstellen, können Sie die Option "REPLACE" angeben, die angibt, dass alle Daten im Tabellenbereich ersetzt werden sollen.

CONTINUEIF(79:80)='++' gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 79 und Spalte 80 ein Pluszeichen (+) enthalten, mit dem nächsten Datensatz verketten soll.

Die Optionen ERRDDN(ERRDDN) und MAPDDN(MAP) geben an, dass Informationen über Fehler in die Datensätze geschrieben werden sollen, die durch die Vorlagen ERRDDN und MAP definiert sind. DISCARDDN(DISCARD) gibt an, dass verworfene Datensätze (die gegen referenzielle Einschränkungen verstoßen) in den Datensatz geschrieben werden sollen, der durch die DISCARD-Vorlage definiert ist. WORKDDN( UT1,OUT ) gibt die temporären Arbeitsdateien für die Sortierungseingabe und -ausgabe an; LOAD verwendet den Datensatz, der durch die Vorlage UT1 für die Sortierungseingabe definiert ist, und den Datensatz, der durch die Vorlage OUT für die Sortierungsausgabe definiert ist.

//STEP1    EXEC DSNUPROC,UID='JUOSU339.LOAD1',TIME=1440,                 
//         UTPROC='',                                                    
//         SYSTEM='SSTR'                                     
//SYSREC   DD DSN=CUST.FM.CINT135.DATA,DISP=SHR,VOL=SER=FORDMD,          
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)                       
//SYSIN    DD *                                                          
  TEMPLATE ERRDDN  UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..ERRDDN)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE UT1     UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..SYSUT1)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE OUT     UNIT(SYSDA)                                          
                   DSN(JUOSU339.T&TI..&ST..SYSOUT)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE MAP     UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..SYSMAP)            
                   SPACE(50,10) TRK                           
  TEMPLATE DISCARD UNIT(SYSDA)                                
                   DSN(JUOSU339.T&TI..&ST..DISCARD)           
                   SPACE(50,10) TRK                           
  TEMPLATE COPYT1                                             
           UNIT(SYSDA)                                        
           DSN(JUOSU339.COPY1.STEP1.&SN..COPY&LR.&PB.)        
           DISP(MOD,CATLG,CATLG)                              
           SPACE(60,30) TRK                                   
  LOAD DATA INDDN SYSREC REPLACE                              
   CONTINUEIF(79:80)='++'                                     
   COPYDDN(COPYT1)                                            
   ERRDDN(ERRDDN)                                       
   WORKDDN(UT1,OUT)                                     
   MAPDDN(MAP)                                          
   DISCARDDN(DISCARD)                                   
  INTO TABLE                                            
       ADMF001.TBOS3902                                 
  ( ID_PARTITION       POSITION(1)   CHAR(1),                      
    CD_PLANT           POSITION(2)   CHAR(5),                      
    NO_PART_BASE       POSITION(7)   CHAR(9),                      
    NO_PART_PREFIX     POSITION(16)  CHAR(7),                      
   NO_PART_SUFFIX     POSITION(23)  CHAR(8),                        
  NO_PART_CONTROL    POSITION(31)   CHAR(3),                        
  DT_TRANS_EFFECTIVE POSITION(34)   DATE EXTERNAL(10),                        
  CD_INV_TRANSACTION POSITION(44)   CHAR(3),                        
  TS_PROCESS         POSITION(47)   TIMESTAMP EXTERNAL(26),                        
  QT_INV_TRANSACTION POSITION(73)   INTEGER,                        
  CD_UNIT_MEAS_USAGE POSITION(77)   CHAR(2),                        
  CD_USER_ID         POSITION(79)   CHAR(7),                        
  NO_DEPT            POSITION(86)   CHAR(4),                        
  NO_WORK_CENTER     POSITION(90)   CHAR(6))               
/*  
Anfang der Änderung

Erstellen von Inline-Kopien während der Serialisierung auf Partitionsebene

Um eine Inline-Bildkopie zu erstellen, während auf Partitionsebene serialisiert wird, geben Sie LOAD mit COPYDDN (oder RECOVERYDDN) auf Anweisungsebene aus, während Sie resume-spec auf der Ebene INTO TABLE PART angeben, wie im folgenden Beispiel gezeigt. Die resultierende Inline-Kopie enthält nur Seiten für Partitionen, die in der Anweisung angegeben sind.

TEMPLATE SCPY DISP(NEW,CATLG,CATLG) 
DSN MYHLQ.&DB..&TS..P&PA.

LOAD DATA SHRLEVEL NONE
FORMAT DELIMITED COPYDDN(SCPY)
INTO TABLE MY.TABLEA PART 1 RESUME YES 
INDDN SREC1
(“ID” POSITION(*) INTEGER
,“NAME” POSITION(*) VARCHAR
)
INTO TABLE MY.TABLEA PART 2 RESUME YES 
INDDN SREC2
(“ID” POSITION(*) INTEGER
,“NAME” POSITION(*) VARCHAR
)
/*
Ende der Änderung

Erfassen von Statistikdaten

Dieses Beispiel ähnelt dem vorherigen Beispiel, außer dass die Option STATISTICS und andere verwandte Optionen hinzugefügt wurden, sodass während des LOAD-Jobs Db2 auch Statistiken für den Tabellenbereich erfasst werden. Durch das Sammeln dieser Statistiken entfällt die Notwendigkeit, nach Abschluss des LOAD-Vorgangs das RUNSTATS-Dienstprogramm auszuführen.

Die Optionen "TABLE", "COLUMN" und "INDEX" geben an, dass Informationen für die Spalten QT_INV_TRANSACTION, NO_DEPT, NO_PART_PREFIX, DT_TRANS_EFFECTIVE und den Index ID0S3902 für die Tabelle TB0S3902 gesammelt werden sollen. BEISPIEL 53 gibt an, dass LOAD 53 % der Zeilen abtasten soll, wenn Statistiken über nicht-führende indizierte Spalten eines Index oder nicht indizierte Spalten erfasst werden. Für den Index werden standardmäßig Statistiken zu allen eindeutigen Werten in allen Schlüsselspaltenkombinationen gesammelt. FREQVAL NUMCOLS 4 COUNT 20 gibt an, dass 20 häufige Werte für die Verkettung der ersten vier Schlüsselspalten gesammelt werden sollen.

BERICHT JA bedeutet, dass die Statistiken als Ausgabe an SYSPRINT gesendet werden sollen. "UPDATE ALL" und "HISTORY ALL" zeigen an, dass alle gesammelten Statistiken im Katalog und in den Katalogverlaufstabellen aktualisiert werden sollen.

//STEP1    EXEC DSNUPROC,UID='JUOSU339.LOAD1',TIME=1440,                 
//         UTPROC='',                                                    
//         SYSTEM='SSTR'                                     
//SYSREC   DD DSN=CUST.FM.CINT135.DATA,DISP=SHR,VOL=SER=FORDMD,          
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)                       
//SYSIN    DD *                                                          
  TEMPLATE ERRDDN  UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..ERRDDN)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE UT1     UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..SYSUT1)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE OUT     UNIT(SYSDA)                                          
                   DSN(JUOSU339.T&TI..&ST..SYSOUT)                       
                   SPACE(50,10) TRK                                      
  TEMPLATE MAP     UNIT(SYSDA)                                           
                   DSN(JUOSU339.T&TI..&ST..SYSMAP)            
                   SPACE(50,10) TRK                           
  TEMPLATE DISCARD UNIT(SYSDA)                                
                   DSN(JUOSU339.T&TI..&ST..DISCARD)           
                   SPACE(50,10) TRK                           
  TEMPLATE COPYT1                                             
           UNIT(SYSDA)                                        
           DSN(JUOSU339.COPY1.STEP1.&SN..COPY&LR.&PB.)        
           DISP(MOD,CATLG,CATLG)                              
           SPACE(60,30) TRK                                   
  LOAD DATA INDDN SYSREC REPLACE                              
   CONTINUEIF(79:80)='++'                                     
   COPYDDN(COPYT1)                                            
   STATISTICS                                                 
     TABLE (TBOS3902) SAMPLE 53                               
       COLUMN (QT_INV_TRANSACTION,                            
               NO_DEPT,                                       
               NO_PART_PREFIX,                                
               DT_TRANS_EFFECTIVE)                                             
     INDEX (IDOS3902                             
       FREQVAL NUMCOLS 4 COUNT 20)                      
     REPORT YES UPDATE ALL HISTORY ALL                  
   ERRDDN(ERRDDN)                                       
   WORKDDN(UT1,OUT)                                     
   MAPDDN(MAP)                                          
   DISCARDDN(DISCARD)                                   
  INTO TABLE                                            
       ADMF001.TBOS3902                                 
  ( ID_PARTITION       POSITION(1)   CHAR(1),                      
    CD_PLANT           POSITION(2)   CHAR(5),                      
    NO_PART_BASE       POSITION(7)   CHAR(9),                      
    NO_PART_PREFIX     POSITION(16)  CHAR(7),                      
   NO_PART_SUFFIX     POSITION(23)  CHAR(8),                        
  NO_PART_CONTROL    POSITION(31)   CHAR(3),                        
  DT_TRANS_EFFECTIVE POSITION(34)   DATE EXTERNAL(10),                        
  CD_INV_TRANSACTION POSITION(44)   CHAR(3),                        
  TS_PROCESS         POSITION(47)   TIMESTAMP EXTERNAL(26),                        
  QT_INV_TRANSACTION POSITION(73)   INTEGER,                        
  CD_UNIT_MEAS_USAGE POSITION(77)   CHAR(2),                        
  CD_USER_ID         POSITION(79)   CHAR(7),                        
  NO_DEPT            POSITION(86)   CHAR(4),                        
  NO_WORK_CENTER     POSITION(90)   CHAR(6))               
/*  

Laden von Unicode-Daten

Die folgende Steueranweisung gibt an, dass Unicode-Daten aus dem Eingabedatensatz REC1 in die Tabelle ADMF001.TBMG0301 geladen werden sollen. Die UNICODE-Option gibt den Typ der Eingabedaten an. Es dürfen nur Daten geladen werden, die die in der WHEN-Klausel angegebene Bedingung erfüllen. Die CCSID-Option gibt die drei codierten Zeichensatzbezeichner für die Eingabedatei an: einen für SBCS-Daten, einen für gemischte Daten und einen für DBCS-Daten. LOG YES gibt an, dass während des LOAD-Jobs eine Protokollierung erfolgen soll.

LOAD DATA INDDN REC1     LOG YES REPLACE           
   UNICODE CCSID(00367,01208,01200)                  
   INTO TABLE "ADMF001 "."TBMG0301"        
   WHEN(00004:00005 = X'0003')                       

Laden von Daten aus mehreren Eingabedatensätzen mithilfe von Partitionsparallelität

Die folgende LOAD-Anweisung enthält eine Reihe von INTO TABLE-Anweisungen, die angeben, welche Daten in welche Partitionen der Tabelle DBA01.TBLX3303 geladen werden sollen. Für jede INTO TABLE-Anweisung:

  • Die Daten werden in die Partition geladen, die durch die Option PART identifiziert wird. Zum Beispiel gibt die erste INTO TABLE-Anweisung an, dass Daten in die erste Partition der Tabelle DBA01.TBLX3303 geladen werden sollen.
  • Die Daten werden aus dem Datensatz geladen, der durch die Option INDDN identifiziert wird. Zum Beispiel sollen die Daten aus dem Datensatz PART1 in die erste Partition geladen werden.
  • Alle verworfenen Zeilen werden in den Datensatz geschrieben, der durch die Option DISCARDDN angegeben wird. Beispielsweise werden Zeilen, die beim Laden von Daten aus dem Datensatz PART1 verworfen werden, in den Datensatz DISC1 geschrieben.
  • Die Daten werden in die angegebenen Spalten (EMPNO, LASTNAME und SALARY) geladen.

LOAD verwendet Partitionsparallelität, um die Daten in diese Partitionen zu laden.

Die Steueranweisung des TEMPLATE-Dienstprogramms definiert die Benennungskonvention für den Datensatz, der während des folgenden LOAD-Jobs dynamisch zugewiesen werden soll. Der Name der Vorlage lautet ERR3. Die Option ERRDDN in der LOAD-Anweisung gibt an, dass alle Fehler in den Datensatz geschrieben werden, der durch diese ERR3 -Vorlage definiert ist.

 TEMPLATE ERR3                                  
         DSN &UT..&JO..&ST..ERR3&MO.&DAY.      
         UNIT SYSDA  DISP(NEW,CATLG,CATLG)     
  LOAD DATA                                      
    REPLACE          
    ERRDDN ERR3                                  
    INTO TABLE DBA01.TBLX3303                    
      PART 1                                     
      INDDN PART1                                
      DISCARDDN DISC1                            
        (EMPNO      POSITION(1)    CHAR(6),      
         LASTNAME   POSITION(8)    VARCHAR(15),  
         SALARY     POSITION(25)   DECIMAL(9,2)) 
    .                                            
    .                                            
    .                                            
    INTO TABLE DBA01.TBLX3303                   
      PART 5                                    
      INDDN PART5                               
      DISCARDDN DISC5                           
        (EMPNO      POSITION(1)    CHAR(6),     
         LASTNAME   POSITION(8)    VARCHAR(15), 
         SALARY     POSITION(25)   DECIMAL(9,2))
/* 

Laden von Daten aus einer anderen Tabelle im selben System mithilfe eines deklarierten Cursors

Die folgende LOAD-Steuerungsanweisung gibt an, dass alle Zeilen, die durch den Cursor C1 identifiziert werden, in die Tabelle MYEMP geladen werden sollen. Die INCURSOR-Option wird verwendet, um den Cursor C1 zu spezifizieren, der in der Steueranweisung des EXEC SQL-Dienstprogramms definiert ist. Der Cursor C1 zeigt auf die Zeilen, die durch die Ausführung der Anweisung SELECT * FROM DSN8810.EMP zurückgegeben werden. In diesem Beispiel sind die Spaltennamen in der Tabelle DSN8810.EMP identisch mit den Spaltennamen in der Tabelle MYEMP. Beachten Sie, dass der Cursor nicht in derselben Tabelle definiert werden kann, in die Db2 die Daten geladen werden sollen.

EXEC SQL
  DECLARE C1 CURSOR FOR SELECT * FROM DSN8810.EMP
ENDEXEC
LOAD DATA
INCURSOR(C1)
REPLACE
INTO TABLE MYEMP
STATISTICS

Gleichzeitiges Laden von Datenpartitionen von einem entfernten Standort mithilfe eines deklarierten Cursors

Die folgende LOAD-Anweisung gibt an, dass für jede angegebene Partition der Tabelle MYEMPP die Zeilen geladen werden sollen, die durch den angegebenen Cursor identifiziert werden. In jeder INTO TABLE-Anweisung gibt die PART-Option die Partitionsnummer und die INCURSOR-Option den Cursor an. Zum Beispiel sollen die Zeilen, die durch den Cursor C1 gekennzeichnet sind, in die erste Partition geladen werden. Die Daten für jede Partition werden parallel geladen.

Jeder Cursor wird in einer separaten Steueranweisung des EXEC SQL-Dienstprogramms definiert und zeigt auf die Zeilen, die durch die Ausführung der angegebenen SELECT-Anweisung zurückgegeben werden. Diese SELECT-Anweisung wird auf einer Tabelle auf einem Remote-Server ausgeführt, sodass der dreiteilige Name zur Identifizierung der Tabelle verwendet wird. In diesem Beispiel sind die Spaltennamen in der Tabelle CHICAGO.DSN8810.EMP mit den Spaltennamen in der Tabelle MYEMPP identisch.

Die vier Trennwände, die geladen werden, enthalten jeweils eine unterschiedliche Anzahl von Datensätzen. Um die Größe der Sortierarbeitsdatensätze zu verbessern, die das LOAD-Dienstprogramm benötigt, wird die Anzahl der Datensätze, die in jede Partition geladen werden, für jede Tabelle im Schlüsselwort NUMRECS angegeben.

EXEC SQL
  DECLARE C1 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
  WHERE EMPNO <= '099999'
ENDEXEC
EXEC SQL
  DECLARE C2 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
  WHERE EMPNO > '099999' AND EMPNO <= '199999'
ENDEXEC
EXEC SQL
  DECLARE C3 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
  WHERE EMPNO > '199999' AND EMPNO <= '299999'
ENDEXEC
EXEC SQL
  DECLARE C4 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
  WHERE EMPNO > '299999' AND EMPNO <= '999999'
ENDEXEC
LOAD DATA
  INTO TABLE MYEMPP PART 1 REPLACE INCURSOR(C1) NUMRECS 10000
  INTO TABLE MYEMPP PART 2 REPLACE INCURSOR(C2) NUMRECS 50000
  INTO TABLE MYEMPP PART 3 REPLACE INCURSOR(C3) NUMRECS 100000
  INTO TABLE MYEMPP PART 4 REPLACE INCURSOR(C4) NUMRECS 50000

Laden von LOB-Daten aus einer Datei

Die folgende LOAD-Anweisung gibt an, dass Daten von 000130DSN!10.SDSNIVPD(DSN8R130 in die Tabelle MY_EMP_PHOTO_RESUME geladen werden sollen. Die Zeichen in den Positionen 1 bis 6 werden in die Spalte EMPNO geladen, und die Zeichen ab Position 7 werden in die Spalte RESUME geladen. CLOBF gibt an, dass die Zeichen an Position 7 der Name einer Datei sind, aus der ein CLOB geladen werden soll.

"ERSETZEN" bedeutet, dass die neuen Daten alle vorhandenen Daten ersetzen. Obwohl keine Protokollierung erfolgen soll, wie durch die Option LOG NO angegeben, darf der Tabellenbereich nicht in den Status CHECK-pending gesetzt werden, da NOCOPYPEND angegeben ist.

SORTKEYS 1 gibt an, dass ein Indexschlüssel sortiert werden soll.

//*****************************************************************
//*   LOAD LOB from file
//*****************************************************************
//LOADIT   EXEC DSNUPROC,UID='LOADIT',TIME=1440,
//         UTPROC='',
//         SYSTEM='DSN'
//SYSREC   DD*
000130DSN!10.SDSNIVPD(DSN8R130)
//SYSUT1   DD DSN=SYSADM.LOAD.SYSUT1,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTOUT  DD DSN=SYSADM.LOAD.SORTOUT,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN    DD  *
 LOAD DATA
   REPLACE LOG NO NOCOPYPEND
   SORTKEYS 1
      INTO TABLE MY_EMP_PHOTO_RESUME
      (EMPNO    POSITION(1:6) CHAR(6),
       RESUME   POSITION(7:31)   CHAR CLOBF)

Laden mit parallelen Unteraufgaben

Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm mehrere parallele Unteraufgaben verwenden soll, wie durch das Schlüsselwort PARALLEL angegeben. Da mit dem Schlüsselwort PARALLEL kein Wert angegeben wird, Db2 bestimmt den optimalen Grad an Parallelität. Diese Verwendung von Parallelität kann möglicherweise die Zeit verkürzen, die zum Laden großer Datenmengen benötigt wird.
LOAD DATA                                                       
PARALLEL                                                        
RESUME YES                                                      
SHRLEVEL NONE                                                   
INDDN INPUT1                                                    
EBCDIC                                                          
CONTINUEIF(80:80)='-'                                           
INTO TABLE SCTX1300.TB_HISTORY_PART                             
(HISTORY_DAILY POSITION(1:11) INT EXTERNAL,                     
 HISTORY_ROWNUM POSITION(13:23) INT EXTERNAL,                   
 HISTORY_CUSTOMER_ID POSITION(25:35) INT EXTERNAL,              
 HISTORY_CUSTOMER_ACCOUNT_ID POSITION(37:50) DECIMAL EXTERNAL,  
 HISTORY_CUSTOMER_DISTRICT_ID POSITION(52:53) CHAR,             
 HISTORY_CUSTOMER_WAREHOUSE_ID POSITION(55:64) CHAR,            
 HISTORY_DISTRICT_ID POSITION(66:67) CHAR,                      
 HISTORY_TRANSACTION_ID POSITION(69:70) CHAR,                   
 HISTORY_WAREHOUSE_ID POSITION(72:81) CHAR,                     
 HISTORY_DATE POSITION(83:108) TIMESTAMP EXTERNAL,              
 HISTORY_AMOUNT POSITION(110:126) DECIMAL EXTERNAL,             
 HISTORY_STATUS POSITION(128:144) VARCHAR,                      
 HISTORY_DATA POSITION(3874:3899) VARCHAR)                      
Anfang der Änderung

Die Beibehaltung von Zeitstempelwerten beim Laden von Zeilen ändert Zeitstempelspalten, die als GENERATED ALWAYS definiert sind

Angenommen, Sie haben Daten aus einer Tabelle mit einer Spalte für den Zeitstempel der Zeilenänderung entladen und möchten die Daten anschließend in eine Tabelle neu laden, die wie folgt definiert ist:

CREATE TABLE MYDB.MYTB
(TYPE CHAR(1) NOT NULL,
CHANGE TIMESTAMP(6) WITHOUT TIME ZONE NOT NULL GENERATED ALWAYS
FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
)
IN MYDB.MYTS;

Beachten Sie, dass die Spalte für den Zeitstempel des Zeilenwechsels als "IMMER ERZEUGT" definiert ist. Wenn Sie die Zeitstempelwerte im Entlade-Datensatz beibehalten möchten, wenn Sie die Daten in diese Tabelle laden, geben Sie die Option OVERRIDE(ROWCHANGE) an, wie im folgenden Beispiel für die LOAD-Anweisung gezeigt:

LOAD DATA INDDN SYSREC OVERRIDE(ROWCHANGE)
INTO TABLE
"MYDB"."MYTB"
NUMRECS 10
("TYPE"
POSITION(00001:00001) CHAR(1)
"CHANGE"
POSITION(00004:00029) TIMESTAMP EXTERNAL(26)
)
Ende der Änderung
Anfang der Änderung

Mehrere Eingabedatensätze werden geladen

Der folgende LOAD-Job lädt Daten aus drei Eingabedatensätzen, die durch die Vorlagen TSREC1, TSREC2 und TSREC3 definiert sind. Diese Datensätze werden dynamisch verkettet und dann werden die Daten in die Tabelle geladen.

TEMPLATE SU1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SU1' 
TEMPLATE CPY DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SCO' 
TEMPLATE SO1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SO1'  
TEMPLATE ERR DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..ERR'  
TEMPLATE MAP DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..MAP'  
TEMPLATE DSC DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI'  
TEMPLATE TSREC1 DSN('E44753.DB1.TS1.P00001.SYSREC')                  
TEMPLATE TSREC2 DSN(‘E44753.DB1.TS1.P00002.SYSREC')
TEMPLATE TSREC3 DSN('E44753.DB1.TS1.P00003.SYSREC') 
         
LOAD DATA INDDN (TSREC1,TSREC2,TSREC3)
RESUME YES LOG YES                                 
SORTDEVT SYSDA SORTNUM 99  
WORKDDN(SU1,SO1) ERRDDN(ERR) DISCARDDN(DSC)       
INTO TABLE TI01AN.OIGT0055                      
WHEN(00001:00002) = X'0003'                    
NUMRECS 8534 
Ende der Änderung
Anfang der Änderung

Laden mehrerer Eingabedatensätze in Partitionen

Der folgende LOAD-Job lädt Daten aus mehreren Eingabedatensätzen in jede Partition. Beispielsweise werden die Eingabedatensätze, die durch die Vorlagen TSREC1 und TSREC4 definiert sind, in Partition 1 geladen.

TEMPLATE SU1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SU1'  
TEMPLATE CPY DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SCO'  
TEMPLATE SO1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SO1'  
TEMPLATE ERR DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..ERR'  
TEMPLATE MAP DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..MAP'  
TEMPLATE DSC1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI1'
TEMPLATE DSC2 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI2'
TEMPLATE DSC3 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI3'
TEMPLATE TSREC1 DSN('E44753.DBE44753.TSE44753.P00001.SYSREC')       
TEMPLATE TSREC2 DSN('E44753.DBE44753.TSE44753.P00002.SYSREC')       
TEMPLATE TSREC3 DSN('E44753.DBE44753.TSE44753.P00003.SYSREC')       
TEMPLATE TSREC4 DSN('E44753.DBE44753.T2E44753.P00001.SYSREC')       
TEMPLATE TSREC5 DSN('E44753.DBE44753.T2E44753.P00002.SYSREC')       
TEMPLATE TSREC6 DSN('E44753.DBE44753.T2E44753.P00003.SYSREC')       
                                                                    
LOAD DATA                                                           
   RESUME YES LOG YES                                               
   SORTDEVT SYSDA SORTNUM 99                                        
   WORKDDN(SU1,SO1) ERRDDN(ERR)                                     
   INTO TABLE TBE44753 PART 1 INDDN (TSREC1,TSREC4) DISCARDDN(DSC1) 
   NUMRECS                 600                                      
   ( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')          
   INTO TABLE TBE44753 PART 2 INDDN (TSREC2,TSREC5) DISCARDDN(DSC2) 
   NUMRECS                 600                                      
   ( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')          
   INTO TABLE TBE44753 PART 3 INDDN (TSREC3,TSREC6) DISCARDDN(DSC3) 
   NUMRECS                 600                                      
   ( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')
Ende der Änderung
Anfang der Änderung

Definition von DEFINE NO-Hilfsobjekten zu Beginn der Ausführung des Dienstprogramms

In der folgenden LOAD-Anweisung gibt DEFINEAUX YES an, dass alle Ziel-Hilfsobjekte mit dem DEFINE NO-Attribut zu Beginn der LOAD-Ausführung definiert werden sollen, unabhängig davon, ob diese Objekte von LOAD gefüllt werden.

LOAD INDDN SYSREC RESUME NO REPLACE DEFINEAUX YES
INTO TABLE MYEMP
Ende der Änderung
Anfang der Änderung

Standardwerte für Spalten werden geladen

In der folgenden LOAD-Anweisung enthält die INTO TABLE-Klausel zwei DEFAULTIF-Spezifikationen, die angeben, wann der Standardspaltenwert geladen werden soll. Für die Spalte C1 soll der Standardwert geladen werden, wenn der Eingabewert leer ist. Für die Spalte C2 ist der Standardwert zu laden, wenn der Eingabewert nicht leer ist. Für die Spalte C3® ist der Standardwert zu laden, wenn der Wert an Position 5 nicht leer ist.

LOAD DATA INDDN SYSREC                                   
 FORMAT DELIMITED COLDEL ',' CHARDEL '"'  DECPT '.'       
  EBCDIC  CCSID(00037,00000,00000)                        
  INTO TABLE SYSADM.TB1                                   
  IGNOREFIELDS YES                                        
  ( C1        POSITION(*) DEFAULTIF(C1= '')               
  , PARTNO    POSITION(*)                                 
  , C2        POSITION(*) DEFAULTIF(C2<>'') 
  , C3        POSITION(*) DEFAULTIF((5:5) <> '')                  
  )

Ebenso zeigen die DEFAULTIF-Spezifikationen im folgenden Beispiel an, dass bei einem Konvertierungsfehler beim Laden eines Werts in die Spalten C1 oder C2 stattdessen der Standardspaltenwert geladen wird.

LOAD DATA INDDN SYSREC                                 
 FORMAT DELIMITED COLDEL ',' CHARDEL '"'  DECPT '.'     
  EBCDIC  CCSID(00037,00000,00000)                      
  INTO TABLE SYSADM.TB1                                 
  IGNOREFIELDS YES                                      
  (   C1        POSITION(*) DEFAULTIF(CONV_ERROR)       
     ,C2        POSITION(*) DEFAULTIF(CONV_ERROR)      
  )       
Ende der Änderung