Nemam pojma zasta ce ti UTL_FILE, pretpostavljam da hoces da ucitas onaj CSV fajl iz Excel-a u Oracle. Sada mi je palo na pamet jos jedno dosta elegantno resenje. Evo o cemu se radi:
Kreiras sinonim za direktorijum (sto si vec uradila), i dalje kreiras eksternu tabelu na sledeci nacin:
create table externa_tabela
(EMPNO NUMBER(4) ,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2)
)
ORGANIZATION EXTERNAL
( type oracle_loader
default directory utl_file_dir
access parameters
( fields terminated by ',' )
location ('moj_fajl.csv')
)
/
Posto si u semi SCOTT, uzeo sam primer tabele EMP koja se nalazi u toj semi tako da mozes da pratis.
merge into EMP e1
using EXTERNA_TABELA e2
on ( e2.empno = e1.empno )
when matched then
update set e1.sal = e2.sal
when not matched then
insert ( empno, ename, job, mgr, hiredate, sal, comm, deptno )
values ( e2.empno, e2.ename, e2.job, e2.mgr, e2.hiredate, e2.sal, e2.comm,
e2.deptno )
/
commit;
Sta smo sada uradili? Vrlo prosto, na ovaj nacin su podaci koji se nalaze u fajlu moj_fajl.csv a koji se razlikuju od podataka iz tabele EMP, update-ovani a oni koji ne postoje su insert-ovani.
Inace ako je tabela prazna, svi podaci mogu da se ucitaju na sledeci nacin:
insert /*+ append */ into emp select * from externa_tabela;
Ti tabelu EMP samo treba da zamenis sa imenom svoje tabele (i njenim kolonama)
Primere rada sa eksternim tabelema i ucitavanjem podataka preko istih imas na sledecem linku u dokumentaciji:
http://download-uk.oracle.com/...215/et_concepts.htm#sthref1650
Ovo moze da se uradi i sa SQL Loader-om, ali ne mogu sada da te ucim kako radi SQL Loader i kako se ucitavaju fajlovi sa njim....
i nadam se da smo ovim stavili tacku na tvoj problem...
[Ovu poruku je menjao Raspucin dana 02.10.2005. u 23:35 GMT+1]