NELLE TABELLE

Utilizzare la clausola INTO TABLES per specificare i nomi per gli oggetti di destinazione quando sono diversi dai nomi di quelli di origine. Il suo ambito può essere su diverse tabelle. Gli oggetti ridenominati possono essere le tabelle stesse, le relative colonne o i tablespace associati.

Questa clausola può essere specificata in un blocco UNLOAD/MIGRATE, per l'elaborazione di un intero tablespace o di un intero database.
NELLE TABELLE
Sintassi
INTO TABLES ( src_tbname | src_qualifier.src_tbname : tgt_tbname | tgt_qualifier.tgt_tbname [ WITH COLUMNS ( src_col : tgt_col | dft_colfamily [, src_col : tgt_col : colfamily]) ] [ IN ( nometsl ) ])
INTO TABELLE IN "percorso/filename"
INTO TABLES WITH SCHEMA nome_schema
Variabile
src_tbname Nome della tabella di origine.
src_qualifier.src_tbname I nomi del qualificatore di origine e della tabella di origine.
tgt_tbname Nome della tabella di destinazione.
tgt_qualifier.tgt_tbname I nomi del qualificatore di destinazione e della tabella di destinazione.
src_col Nome della colonna di origine.
tgt_col Nome della colonna di destinazione.
dft_colfamily Nome della famiglia di colonne predefinita
colfamily Nome della famiglia di colonne associata alla colonna di destinazione
tsname Nome del tablespace
"path/filename" File contenente le specifiche di associazione delle tabelle.
Predefinito
Nessuno.
Esempio
INTO TABLES (IMPIEGATO: NEW_USER.NEW_EMPLOYEE)
Quando una clausola INTO TABLES viene specificata in un blocco UNLOAD o MIGRATE, non è possibile specificare anche una query SELECT esplicita in questo stesso blocco.
Se si esegue uno scaricamento dati e se una clausola INTO TABLES viene specificata in un file di controllo, questo file di controllo deve contenere almeno una specifica LOADFILE o DDLFILE (o entrambe), altrimenti la clausola INTO TABLES verrà ignorata.
La clausola INTO TABLES viene presa in considerazione solo se la destinazione considerata è Db2® o HBase.
Esistono tre metodi per specificare una clausola INTO TABLES :
  1. Tabelle, colonne e tablespace specificati nel file di controllo
    • Specificare direttamente nel file di controllo l'elenco di nomi tabella, nomi colonna e nomi tablespace interessati, rispettivamente con le parole chiave INTO TABLES, WITH COLUMNSe IN.
    • È possibile specificare il numero di tabelle desiderate, attraverso un elenco di specifiche associate separate da virgole.
    • src_qualifier.src-tbname o src_tbname: indica la tabella di origine a cui si desidera associare i nomi di destinazione. Quando si elabora un intero database, tutte le tabelle specificate nella clausola devono esistere in questo database. Durante l'elaborazione di un intero tablespace, tutte le tabelle specificate nella clausola devono esistere in questo tablespace. Tutti i nomi delle tabelle di origine devono essere distinti.
    • tgt_qualifier.tgt_tbname o tgt_tbname: specificare il qualificatore della tabella di destinazione e / o il nome da associare alla tabella di origine corrispondente.

      Tutti i nomi tabella di destinazione devono essere distinti.

    • WITH COLUMNS: il suo contenuto dipende dall'ambiente di destinazione considerato.
      • Se la destinazione considerata è una Db2 , specificare un elenco di coppie di nomi colonna per correlare le colonne della tabella di origine associata alle colonne della relativa tabella di destinazione. Per una determinata colonna di origine, il nome della colonna di destinazione associata verrà utilizzato internamente per una migrazione di dati oppure verrà preso in considerazione quando si genera un comando Db2 Load corrispondente e / o un'istruzione CREATE TABLE. Tutti i nomi di colonna di origine specificati devono esistere nella tabella di origine.
      • Se la destinazione considerata è HBase, specificare una famiglia di colonne predefinita, facoltativamente seguita da un elenco di associazioni composte da un nome colonna della tabella di origine, un nome colonna della tabella di destinazione e la relativa famiglia di colonne associata nella tabella di destinazione. I nomi delle colonne e le famiglie di colonne specificate verranno presi in considerazione internamente per una migrazione automatica dei dati oppure verranno presi in considerazione quando si genera un comando di caricamento per questa destinazione. Tutti i nomi di colonna di origine specificati devono esistere nella tabella di origine.
    • IN: specificare un elenco di nomi tablespace. Questo elenco di tablespace viene utilizzato quando si genera un'istruzione CREATE TABLE.
      Nota:

      Se una clausola DDLOPT viene specificata nel file di controllo con l'opzione IN e se viene specificata anche una clausola INTO TABLES con l'opzione IN , l'opzione IN della clausola DDLOPT verrà ignorata (verrà utilizzata l'opzione IN della clausola INTO TABLES).

  2. Tabelle, colonne e tablespace specificati in un file esterno

    Specificare un nome file esterno contenente un elenco di nomi tabella, nomi colonna e nomi tablespace interessati con le parole chiave INTO TABLES IN.

  3. Schema nel file di controllo

    Specificare uno schema di destinazione da considerare per un'attività di migrazione dati o di scaricamento dati. Per impostazione predefinita, Optim™ High Performance Unload utilizza lo schema di ciascuna tabella da elaborare. Se questa opzione viene utilizzata, lo schema specificato sovrascrive quello predefinito e viene utilizzato per un'attività di migrazione dati o per un'attività di scaricamento se questa è accompagnata dalla creazione di un comando di caricamento Db2 .

Descrizione del file esterno

Una voce per tabella per cui si desidera specificare un'associazione di nomi. Non è possibile dividere le specifiche di una tabella in più righe, poiché ciò causerebbe un contenuto sconosciuto per Optim High Performance Unload.

È possibile specificare il numero di tabelle desiderato, con il numero di voci necessario nel file.

A seconda della destinazione considerata, ogni voce deve essere formattata in base al modello seguente:
  • per una destinazione Db2 :
    src_qual.src_tb:tgt_qual.tgt_tb;src_co11:tgt_col1,...,src_coln:tgt_coln;ts1,...,tsn
  • per una destinazione HBase:
    src_qual.src_tb:tgt_qual.tgt_tb;colFamilyDft,src_co11:tgt_col1:colFamilyA,...,src_coln:tgt_coln:colFamilyB;ts1,...,tsn

Una voce deve contenere due caratteri punto e virgola (';'), al fine di separare i tre componenti differenti (tabelle, colonne, tablespace), anche se non è necessario specificare i nomi delle colonne o i nomi dei tablespace. L'associazione dei nomi delle tabelle è obbligatoria, ma gli elenchi dei nomi delle colonne e dei nomi dei tablespace sono facoltativi.

È possibile omettere almeno una di queste due ultime specifiche. Di seguito sono riportati alcuni esempi:

1/  SOURCE_TABLE:TARGET_TABLE;SOURCE_COL1:TARGET_COL1;
2/  SOURCE_TABLE:TARGET_TABLE;;TSAME1,TSNAME2,TSNAME3
3/  SOURCE_TABLE:TARGET_TABLE;;

1 / Non esiste alcuna specifica di tablespace.

2 / Nessuna specifica di colonna.

3 / Non esiste alcuna specifica di colonna o tablespace.

L'utilizzo di un tale file esterno è un'alternativa alla specifica di un'intera clausola INTO TABLES in un file di controllo. Di conseguenza, per qualsiasi voce in esso contenuta, il significato dei suoi tre componenti (tabelle, colonne, tablespace) è esattamente lo stesso dei rispettivi tre componenti di un'intera clausola INTO TABLES descritta in precedenza.

Se un comando di caricamento deve essere generato per una destinazione HBase, è obbligatorio che le informazioni sull'ambiente di destinazione vengano raccolte tramite la specifica di una clausola INTO TABLES. In tal caso, è obbligatorio specificare anche la relativa opzione WITH COLUMNS, con un elenco appropriato che mette in relazione le colonne della tabella di origine con le colonne della tabella di destinazione e le relative famiglie, oppure specificare lo stesso elenco nel file associato all'opzione IN.

Esempio: nomi di destinazione specificati direttamente nel file di controllo

Ecco il risultato dell' Optim High Performance Unload esecuzione:

[i1010@lat179(hm510_mnt:) ~]$ db2hpu -i i1010 -f sysin_example_doc 
INZM031I Optim High Performance Unload for Db2 06.01.00.001(130628) 
         64 bits 07/02/2013 (Linux lat179 x86_64)
INZI473I Memory limitations: 'unlimited' for virtual memory and 'unlimited' for data segment
       ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----
       +----9----+----10---+----11---+----12---+----13-
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE USERSPACE1
000003 DB2 NO LOCK NO FLUSH BUFFERPOOLS NO
000004 
000005 ONLY TABLES (EMPLOYEE, DEPARTMENT)
000006 
000007 INTO TABLES (EMPLOYEE : NEW_USER.NEW_EMPLOYEE
000008              WITH COLUMNS (FIRSTNME:FIRST_NAME, PHONENO:PHONE_NUMBER)
000009              IN (NEW_TABLESPACE1) )
000010 
000011 LOADFILE("loadfile")
000012 DDLFILE("ddlfile")
000013 OUTFILE("outfile")
000014 
000015 FORMAT DEL;

INZU462I HPU control step start: 10:02:19.675.
INZU463I HPU control step end  : 10:02:19.766.
INZU464I HPU run step start    : 10:02:19.767.
INZU410I HPU utility has unloaded 14 rows on lat179 host for I1010.DEPARTMENT in outfile_USERSPACE1_I1010_DEPARTMENT.
INZU622I HPU utility has generated the DDL file ddlfile_USERSPACE1_I1010_DEPARTMENT.
INZU442I HPU utility has generated the LOAD file loadfile_USERSPACE1_I1010_DEPARTMENT (LRECL=0).
INZU410I HPU utility has unloaded 42 rows on lat179 host for I1010.EMPLOYEE in outfile_USERSPACE1_I1010_EMPLOYEE.
INZU622I HPU utility has generated the DDL file ddlfile_USERSPACE1_I1010_EMPLOYEE.
INZU442I HPU utility has generated the LOAD file loadfile_USERSPACE1_I1010_EMPLOYEE (LRECL=0). 
INZU465I HPU run step end      : 10:02:19.878.
INZI441I HPU successfully ended: Real time -> 0m0.203769s
User time -> 0m0.027995s : Parent -> 0m0.027995s, Children -> 0m0.000000s
Syst time -> 0m0.024996s : Parent -> 0m0.024996s, Children -> 0m0.000000s

Contenuto dei file generati con i comandi di caricamento Db2 :

[i1010@lat179(hm510_mnt:) ~]$ cat loadfile_USERSPACE1_I1010_EMPLOYEE 
LOAD FROM "outfile_USERSPACE1_I1010_EMPLOYEE" OF DEL
MODIFIED BY CODEPAGE=1208
INSERT INTO "NEW_USER"."NEW_EMPLOYEE" ("EMPNO",
                                       "FIRST_NAME",
                                       "MIDINIT",
                                       "LASTNAME",
                                       "WORKDEPT",
                                       "PHONE_NUMBER",
                                       "HIREDATE",
                                       "JOB",
                                       "EDLEVEL",
                                       "SEX",
                                       "BIRTHDATE",
                                       "SALARY",
                                       "BONUS",
                                       "COMM");

[i1010@lat179(hm510_mnt:) ~]$ cat loadfile_USERSPACE1_I1010_DEPARTMENT 
LOAD FROM "outfile_USERSPACE1_I1010_DEPARTMENT" OF DEL
MODIFIED BY CODEPAGE=1208
INSERT INTO "I1010"."DEPARTMENT" ("DEPTNO","DEPTNAME","MGRNO","ADMRDEPT","LOCATION");

Contenuto dei file generati con i comandi DDL:

[i1010@lat179(hm510_mnt:) ~]$ cat ddlfile_USERSPACE1_I1010_EMPLOYEE 
CREATE TABLE "NEW_USER"."NEW_EMPLOYEE"  (
                "EMPNO" CHAR(6 OCTETS) NOT NULL , 
                "FIRST_NAME" VARCHAR(12 OCTETS) NOT NULL , 
                "MIDINIT" CHAR(1 OCTETS) , 
                "LASTNAME" VARCHAR(15 OCTETS) NOT NULL , 
                "WORKDEPT" CHAR(3 OCTETS) , 
                "PHONE_NUMBER" CHAR(4 OCTETS) , 
                "HIREDATE" DATE , 
                "JOB" CHAR(8 OCTETS) , 
                "EDLEVEL" SMALLINT NOT NULL , 
                "SEX" CHAR(1 OCTETS) , 
                "BIRTHDATE" DATE , 
                "SALARY" DECIMAL(9,2) , 
                "BONUS" DECIMAL(9,2) , 
                "COMM" DECIMAL(9,2) )
            IN "NEW_TABLESPACE1" ;

[i1010@lat179(hm510_mnt:) ~]$ cat ddlfile_USERSPACE1_I1010_DEPARTMENT 
CREATE TABLE "I1010"."DEPARTMENT"  (
                "DEPTNO" CHAR(3 OCTETS) NOT NULL , 
                "DEPTNAME" VARCHAR(36 OCTETS) NOT NULL , 
                "MGRNO" CHAR(6 OCTETS) , 
                "ADMRDEPT" CHAR(3 OCTETS) NOT NULL , 
                "LOCATION" CHAR(16 OCTETS) )
            IN "USERSPACE1" ;

In grassetto sono i nomi di destinazione modificati specificati nella clausola INTO TABLES del file di controllo

Esempio: nomi di destinazione specificati in un file esterno

Considerare il seguente file esterno

[i1010@lat179(hm510_mnt:) ~]$ cat /home/i1010/into_tables.txt
EMPLOYEE:NEW_USER.NEW_EMPLOYEE ; FIRSTNME:FIRST_NAME, PHONENO:PHONE_NUMBER ; NEW_TABLESPACE1

Risultato dell' Optim High Performance Unload esecuzione:

[i1010@lat179(hm510_mnt:) ~]$ db2hpu -i i1010 -f sysin_example_doc 
INZM031I Optim High Performance Unload for Db2 06.01.00.001(130628)
         64 bits 07/02/2013 (Linux lat179 x86_64)
INZI473I Memory limitations: 'unlimited' for virtual memory and 'unlimited' for data segment
       ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----
       +----9----+----10---+----11---+----12---+----13-
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE USERSPACE1
000003 DB2 NO LOCK NO FLUSH BUFFERPOOLS NO
000004 
000005 ONLY TABLES (EMPLOYEE, DEPARTMENT)
000006 
000007 INTO TABLES IN "/home/i1010/into_tables.txt"
000008 
000009 LOADFILE("loadfile")
000010 DDLFILE("ddlfile")
000011 OUTFILE("outfile")
000012 
000013 FORMAT DEL;

INZU462I HPU control step start: 10:30:01.634.
INZU463I HPU control step end  : 10:30:01.741.
INZU464I HPU run step start    : 10:30:01.742.
INZU410I HPU utility has unloaded 14 rows on lat179 host for I1010.DEPARTMENT in outfile_USERSPACE1_I1010_DEPARTMENT.
INZU622I HPU utility has generated the DDL file ddlfile_USERSPACE1_I1010_DEPARTMENT.
INZU442I HPU utility has generated the LOAD file loadfile_USERSPACE1_I1010_DEPARTMENT (LRECL=0).
INZU410I HPU utility has unloaded 42 rows on lat179 host for I1010.EMPLOYEE in outfile_USERSPACE1_I1010_EMPLOYEE.
INZU622I HPU utility has generated the DDL file ddlfile_USERSPACE1_I1010_EMPLOYEE.
INZU442I HPU utility has generated the LOAD file loadfile_USERSPACE1_I1010_EMPLOYEE (LRECL=0).
INZU465I HPU run step end      : 10:30:01.797.
INZI441I HPU successfully ended: Real time -> 0m0.162494s
User time -> 0m0.031995s : Parent -> 0m0.031995s, Children -> 0m0.000000s
Syst time -> 0m0.016997s : Parent -> 0m0.016997s, Children -> 0m0.000000s

Contenuto dei file generati con i comandi di caricamento Db2 :

[i1010@lat179(hm510_mnt:) ~]$ cat loadfile_USERSPACE1_I1010_EMPLOYEE 
LOAD FROM "outfile_USERSPACE1_I1010_EMPLOYEE" OF DEL
MODIFIED BY CODEPAGE=1208
INSERT INTO "NEW_USER"."NEW_EMPLOYEE" ("EMPNO",
                                       "FIRST_NAME",
                                       "MIDINIT",
                                       "LASTNAME",
                                       "WORKDEPT",
                                       "PHONE_NUMBER",
                                       "HIREDATE",
                                       "JOB",
                                       "EDLEVEL",
                                       "SEX",
                                       "BIRTHDATE",
                                       "SALARY",
                                       "BONUS",
                                       "COMM");

[i1010@lat179(hm510_mnt:) ~]$ cat loadfile_USERSPACE1_I1010_DEPARTMENT 
LOAD FROM "outfile_USERSPACE1_I1010_DEPARTMENT" OF DEL
MODIFIED BY CODEPAGE=1208
INSERT INTO "I1010"."DEPARTMENT" ("DEPTNO","DEPTNAME","MGRNO","ADMRDEPT","LOCATION");

Contenuto dei file generati con i comandi DDL:

[i1010@lat179(hm510_mnt:) ~]$ cat ddlfile_USERSPACE1_I1010_EMPLOYEE 
CREATE TABLE "NEW_USER"."NEW_EMPLOYEE"  (
                "EMPNO" CHAR(6) NOT NULL , 
                "FIRST_NAME" VARCHAR(12) NOT NULL , 
                "MIDINIT" CHAR(1) , 
                "LASTNAME" VARCHAR(15) NOT NULL , 
                "WORKDEPT" CHAR(3) , 
                "PHONE_NUMBER" CHAR(4) , 
                "HIREDATE" DATE , 
                "JOB" CHAR(8) , 
                "EDLEVEL" SMALLINT NOT NULL , 
                "SEX" CHAR(1) , 
                "BIRTHDATE" DATE , 
                "SALARY" DECIMAL(9,2) , 
                "BONUS" DECIMAL(9,2) , 
                "COMM" DECIMAL(9,2) )
            IN "NEW_TABLESPACE1" ;

[i1010@lat179(hm510_mnt:) ~]$ cat ddlfile_USERSPACE1_I1010_DEPARTMENT 
CREATE TABLE "I1010"."DEPARTMENT"  (
                "DEPTNO" CHAR(3) NOT NULL , 
                "DEPTNAME" VARCHAR(36) NOT NULL , 
                "MGRNO" CHAR(6) , 
                "ADMRDEPT" CHAR(3) NOT NULL , 
                "LOCATION" CHAR(16) )
            IN "USERSPACE1" ;

In grassetto sono i nomi di destinazione modificati specificati tramite il file indicato nella clausola INTO TABLES del file di controllo.