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