Om externe files vanuit de Oracle database te kunnen benaderen, moet je eerste het create directory commando gebruiken om een directory object te definiƫren die naar de extrene file locatie wijst. Gebruikers die de externe files willen gebruiken, moeten read rechten hebben op deze directory.
Let Op:
Voor je van start gaat, moet je eerst controleren of de externe directory bestaat en dat de gebruiker die het commando uitvoerd het create any directory privilege heeft.
Het volgende voorbeeld creƫert een directory met de naam voorbeeld_dir en geeft lees en schrijf rechten aan de gebruiker scott
SQL> create directory voorbeeld_dir as 'c:\temp\';
Directory created.
SQL> grant read on directory voorbeeld_dir to scott;
Grant succeeded.
SQL> grant write on directory voorbeeld_dir to scott;
Grant succeeded.
connect als scott en voer het voorbeeld script uit:
SQL> connect scott/tiger Connected. SQL> set pages 0 newpage 0 feedback off SQL> select deptno||'~'||dbname||'~'||loc||'~' 2 from dept 3 order by loc; select deptno||'~'||dname||'~'||loc||'~'
40~OPERATIONS~BOSTON~ 30~SALES~CHICAGO~ 20~RESEARCH~DALLAS~ 10~ACCOUNTING~NEW YORK~
SQL> spool c:\temp\dept.lst SQL> /
40~OPERATIONS~BOSTON~ 30~SALES~CHICAGO~ 20~RESEARCH~DALLAS~ 10~ACCOUNTING~NEW YORK~
SQL> spool off SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options
Kijk op de server of het bestand is aangemaakt:
C:\Documents and Settings\Michael>cd \temp
C:\TEMP>dir De volumenaam van station C is pietje Het volumenummer is 2629-16F0
Map van C:\TEMP
06-06-2007 13:06 <DIR> . 06-06-2007 13:06 <DIR> .. 25-03-2008 08:06 352 dept.lst 5 bestand(en) 182.239 bytes 2 map(pen) 9.972.236.288 bytes beschikbaar
C:\TEMP> En zie, er is een file dept.lst aangemaakt. Nu we de data op het os hebben, kunnen we de externe tabel maken, hier een voorbeeld van een tabel gebasseerd op de dept.lst zoals we net hebben aan gemaakt:
SQL>set feedback on heading on newpage 1 pages 60
create table dept_ext (DEPTNO NOT NULL NUMBER(2), DNAME VARCHAR2(14), LOC VARCHAR2(13) ) organization external (type ORACLE_LOADER default directory voorbeeld_dir access parameters (records delimited by newline fileds terminated by "~" ( DEPTNO number(2), DNAME VARCHAR2(14), LOC VARCHAR2(13) )) location ('dept.lst'));
table created.
SQL> desc dept_ext; Name Null? Type ----------------------------------------- -------- -------------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) De externe tabel is nu geschikt om bijvoorbeeld met SQL*Loader te worden geleegd/gevuld |