ANEXA G

Exportarea Continutului unei Tabele intr-un Fisier

Uneori este util sa avem valorile unei coloane dintr-o tabela intr-un fisier text care poate fi rulat pentru a insera respectivele valori in tabela. De exemplu cand se distribuie sau se instaleaza un sistem se doreste funniza rea unui fisier care sa contina informatiile de start-up pentru o tabela. Asemenea fisier este furnizat odata cu ORACLE pentru tabelele de demonstratie Emp, Dept si Salgrade.

Desi datele sunt existente in tabela, se poate dori existenta infor matiei in formatul "INSERT INTO nume_tabela VALUES(,,,,);" SQL din SQL poate fi utilizat pentru a indeplini aceasta. Urmatorul cod realizeaza blocul INSERT pentru tabela DEPT.






        set feed off

        set head off

        set pages 0

        set lines 75

        set verify off



        spool insert.sql



        select 'insert into dept', '     values (' ||

                deptno || ',' ||

                ''''||dname||''''||','||

                ''''||loc||''''||');'

        from dept;



        spool off



        set feed on

        set head on

        set pages 24

        set verify on



start insert.sql



Pentru fiecare linie din tabela DEPT, codul de mai sus genereaza blocurile INSERT de mai jos :




insert into dept

        values (10,'ACCOUNTING','NEW YORK');



insert into dept

        values (20,'RESEARCH','DALLAS');

insert into dept

        values (30,'SALES','CHICAGO');

insert into dept

        values (40,'OPERATIONS','BOSTON');



Aceste blocuri au fost "capturate" in fisierul "INSERT.SQL".

Poate ca ati observat numarul mare de apostrofuri din ultimul exemplu. Un set de 4 apostrofuri genereaza un singur apostrof in blocul final - RETINETI : Sirurile de caractere trebuie incadrate de apostrofuri !





        Astfel :



        SELECT '''X'''            intoarce 'X'

        SELECT ''''               intoarce '

        SELECT ''''||DNAME||''''  intoarce 'BOSTON'



SQL din SQL este o tehnica ce poate fi utilizata pentru a mari tabelele cu valori stocate in fisiere text. De asemeni pot fi folosite utilitarele IMPORT/EXPORT.

Generarea unor blocuri INSERT pentru o tabela cu multe coloane este costisitor sa generam coloana cu coloana. In loc, putem extrage informatia din "Data Dictionary".

Intr-adevar, cand se genereaza SQL bazat pe date existente, "Data Dictionary" este locul de start. Se poate utiliza acest dictionar pentru a furniza parametrii pentru orice bloc SQL. Urmatorul exeplu utilizeaza infor- matia din "Data Dictionary" pentru a genera blocuri CREATE TABLE pentru fiecare tabela a utilizatorului. Acest exemplu ilustreaza cateva tehnici necesare pentru generarea unui SQL complex. SA NU VA INGRIJORATI CA VA TREBUI SA UTILI- ZATI ACEST COD DE FIECARE DATA CAND DORITI SA EXECUTATI UN BACK-UP AL TABE- LELOR DUMDEAVOASTRA ! ORACLE FURNIZEAZA ALTE UTILITARE CARE EXECUTA ACEST LUCRU.

Crearea Tabelelor.

Este mereu o idee buna sa fiti capabili sa regenerati propriile tabele. Puteti sa lasati SQL sa genereze blocuri CREATE TABLE pentru aceasta. Ecranul "Data Dictionary" - user_tab_columns - contine tiate informatiile necesare.



        SELECT TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, DATA_LENGHT,

        DATA_PRECISION, DATA_SCALE, NULLABLE

        FROM USER_TAB_COLUMNS

        WHERE TABLE_NAME IN ('DEPT','EMP','SALGRADE')

        ORDER BY TABLE_NAME, COLUMN_ID;





TABLE_NAME COLUMN_ID COLUMN_NAME DATA_T DATA_LEN DATA_PREC DATA_SCALE NULLABLE

---------- --------- ----------- ------ -------- --------- ---------- --------

DEPT            1       DEPTNO   NUMBER      22         2       0       N

DEPT            2       DNAME    CHAR        14                         Y

DEPT            3       LOC      CHAR        13                         Y

EMP             1       EMPNO    NUMBER      22         4       0       N

EMP             2       ENAME    CHAR        10                         Y

EMP             3       JOB      CHAR         9                         Y

EMP             4       MGR      NUMBER      22         4       0       Y

EMP             5       HIREDATE DATE         7                         Y

EMP             6       SAL      NUMBER      22         7       2       Y

EMP             7       COMM     NUMBER      22         7       2       Y

EMP             8       DEPTNO   NUMBER      22         2       0       N

SALGRADE        1       GRADE    NUMBER      22                         Y

SALGRADE        2       LOSAL    NUMBER      22                         Y

SALGRADE        3       HISAL    NUMBER      22                         Y