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
BogSoft 1999