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.
- 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 ) ])
- Variabile
- src_tbname Nome della tabella di origine.
- Predefinito
- Nessuno.
- Esempio
- INTO TABLES (IMPIEGATO: NEW_USER.NEW_EMPLOYEE)
- 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).
- 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.
- 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.
- per una destinazione Db2 :
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.