lunedì 5 settembre 2011

db2look - estrarre tutte le DDL da un database db2

DB2 fornisce un'utility per estrarre tutte le DDL di tutti gli oggetti creati su un database.
Il comando da CLP è db2look


  • Per estrarre la DDL di una tabella specifica:
    db2look -d <DBNAME> -e -z <TABSCHEMA> -t <TABNAME> -x -o <OUTPUTFILE>       
  • Per estrarre la DDL di tutti gli oggetti presenti in uno schema preciso:
    db2look -d <DBNAME> -e -z <SCHEMA_NAME> -x -o <OUTPUTFILE>
  • Per estrarre la DDL dell'intero Database:
    db2look -d <DBNAME> -e -x -l -f -o <OUTPUTFILE>    (-m anche le statistiche)

Esempio:
db2look -d MUSICA -e -x -l -f -o db2look_MUSICA.txt

domenica 24 luglio 2011

Comandi utili sull'istanza

Istanza DB2: Elemento fondamentale su cui si appoggiano uno o più database.
  • Cambiare istanza (per la sessione corrente):
      WINDOWS: set db2instance=<nome_istanza>
      AIX:  db2 attach to <istanza>
  • Creare un'istanza DB2:
     db2icrt -u <utente_proprietario> <nome_istanza>

     db2icrt -p <porta> -u <utente_proprietario> <nome_istanza>

  • Cancellare un'istanza DB2:
     db2idrop <istanza>
  • Visualizzare le istanze installate:
      db2ilist
  • Visualizzare la congihurazione dell'istanza:
     db2 get dbm cfg
  •  Per vedere il log dell'istanza (db2diag):
      AIX: /home/<istanza>/sqllib/db2dump/db2diag.log
  •  Visualizzare la porta dell'istanza
      La porta di default per l'istanza DB2 è la 50000
      Dalla dbm cfg trovare il campo SVCENAME e cercare la corrispondenza nome-porta sul file   services:
        Su Windows:
      C:\WINDOWS\system32\drivers\etc\services
        Su AIX
            /etc/services
 
       
       
Enhanced by Zemanta

Comando SQL per inserire una riga in una tabella DB2

Per inserire un record in una tabella:

INSERT INTO <NOME_SCHEMA>.<NOME_TABELLA>  (COLONNA1)  VALUES (VALORE)  
  
Esempio:

INSERT INTO CATALOGO.MUSICA  (TITOLO,ID)  VALUES ('Lemon Tree',1) 

   

Visualizzare la configurazione di un database DB2

Per visualizzare la configurazione del database:
db2 get db cfg for <DBNAME> show detail


Enhanced by Zemanta

lunedì 18 luglio 2011

Cancellare una tabella in DB2

Per eliminare i dati di una tabella DB2, è possibile usare il comando SQL DELETE:

delete from <NOME_SCHEMA>.<NOME_TABELLA>


delete from <NOME_SCHEMA>.<NOME_TABELLA> where <NOME_COLONNA> = <valore>

Nota: Il comando di DELETE, se applicato su tabelle con molti record, può portare ad un errore di TRANSACTION LOG FULL.
Per evitare ciò, nel caso si voglia svuotare completamente una tabella eliminandone il contenuto, è possibile usare una import con file sorgente un file vuoto:


import from /dev/null of del replace into <NOME_SCHEMA>.<NOME_TABELLA>


Un'altra modalità è quella con il comando TRUNCATE:

truncate table <NOME_SCHEMA>.<NOME_TABELLA> immediate

sabato 25 giugno 2011

Modificare una colonna in DB2

Per modificare il tipo di una colonna di una tabella DB2 si può usare il comando ALTER TABLE con l'opzione ALTER COLUMN:


ALTER TABLE <nome_schema>.<nome_tabella> ALTER COLUMN <nome_colonna> SET DATA TYPE VARCHAR(50);


Esempio:
ALTER TABLE CATALOGO.MUSICA ALTER COLUMN TITOLO SET DATA TYPE VARCHAR(200);


Non è sempre possibile cambiare il tipo di dato di una colonna già esistente.
Ad esempio NON è possibile:

  • Ridurre la lunghezza di un VARCHAR
  • trasformare un CHAR in un VARCHAR

Esportare e importare dati da una tabella DB2


Ci sono 2 formati per esportare/importare i dati da una tabella:

  • formato .del (i dati esportati vengono delimitati da virgole. Questo tipo di formato può essereletto indipendentemente dal sistema che si usa)
  • formato. ixf (è un formato che può essere letto solo da DB2, oltre ai dati memorizza anche la struttura della tabella)

Export di tutti i dati di una tabella in formato del:

export to <nome_file>.del of del 
select * from <nome_schema>.<nome_tabella_origine>;

oppure, per esportare i dati sostituendo una colonna con dei dati inseriti manualmente (ad esempio esportare i dati con la stringa "abc" al posto della colonna2):

export to <nome_file>.del of del
select
COLONNA1,
'abc',
COLONNA3
from <nome_schema>.<nome_tabella_origine>;

Import di tutti i dati in una tabella:
import from <nome_file>.del of del 
commitcount 5000 INSERT INTO <nome_schema>.<nome_tabella_destinazione>;

La import può inserire i dati nella tabella di destinazione in diversi modi:
  • INSERT, aggiunge i record letti dal file .del in fondo alla tabella senza sovrascrivere eventuali datigià presenti
  • INSERT_UPDATE, inserisce i nuovi record letti dal file aggiornando eventuali dati già inseriti 
  • REPLACE, svuota la tabella e inserisce i nuovi dati

Nota: E' importante specificare l'opzione commitcount <nr_record> per import di grandi volumi di dati per evitare che l'import fallisca a causa di un errore TRANSACTION LOG FULL.
Specificando il commitcount, il log viene svuotato ogni volta che sono stati inseriti un numero di record pari al valore specificato per l'opzione.

Export e import in formato .ixf:

export to <nome_file>.ixf of ixf select * from <nome_schema>.<nome_tabella_origine>;

import from <nome_file>.ixf of ixf
commitcount 5000 INSERT INTO <nome_schema>.<nome_tabella_destinazione>;