create or replace directory UTL_FILE_DIR as 'd:/test';
d:/test 必需是已经存在的目录。
用sys用户登录给要访问的用户指定访问目录的权限。
GRANT READ ON DIRECTORY UTL_FILE_DIR TO wangyh;
目录创建ÆÆ以后,就可以把读写权限,“授予特定用户,具体语法如下:GRANT READ,WRITE]目录目录的用户名, 例如:
此时用户EYGLE就拥有了对该目录的读写权限。
d:/test 必需是已经存在的目录。
用sys用户登录给要访问的用户指定访问目录的权限。
GRANT READ ON DIRECTORY UTL_FILE_DIR TO wangyh;
GRANT WRITE ON DIRECTORY UTL_FILE_DIR TO wangyh;
创建或替换为“/ tmp目录”的目录EXP_DIR;
目录创建ÆÆ以后,就可以把读写权限,“授予特定用户,具体语法如下:GRANT READ,WRITE]目录目录的用户名, 例如:授予读,写上目录EXP_DIR到EYGLE;
此时用户EYGLE就拥有了对该目录的读写权限。
让我们看一个简单的测试:
SQL>创建或替换目录UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE'; 目录已创建。 SQL>声明 2 fhandle utl_file.file_type; 3开始 4 fhandle:= utl_file.fopen('UTL_FILE_DIR','example.txt文件','w'的); 5 utl_file.put_line(fhandle,“EYGLE测试写一个'); 6 utl_file.put_line(fhandle,“EYGLE测试写两个'); 7 utl_file.fclose(fhandle); 8月底; 9 / PL / SQL过程已成功完成。 SQL>! 甲骨文跳线9.2.0] $ /选择/ ORACLE /的UTL_FILE / example.txt中 EYGLE测试写一个 EYGLE测试写了两 [ORACLE跳线9.2.0]
类似的我们可以通过UTL_FILE来读取文件:
SQL>声明 2 fhandle utl_file.file_type; 3 fp_buffer VARCHAR2(4000); 4开始 5 fhandle:= utl_file.fopen('UTL_FILE_DIR','example.txt文件','R'); 6 7 utl_file.get_line(fhandle,fp_buffer); DBMS_OUTPUT.PUT_LINE(fp_buffer); 9 utl_file.get_line(fhandle,fp_buffer); 10 DBMS_OUTPUT.PUT_LINE(fp_buffer); 11 utl_file.fclose(fhandle); 12月底; 13 / EYGLE测试写一个 EYGLE测试写了两 PL / SQL过程已成功完成。
可以查询dba_directories查看所有目录。
SQL> SELECT * FROM dba_directories; 老板的directory_name DIRECTORY_PATH -------------------------------------------------- ---------------------------------------- SYS UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE SYS BDUMP_DIR的/ opt / ORACLE / ADMIN /康纳/ bdump SYS EXP_DIR的/ opt / ORACLE / UTL_FILE
可以使用下拉目录中删除这些路径。
SQL>降目录EXP_DIR; 放置目录 SQL> SELECT * FROM dba_directories; 老板的directory_name DIRECTORY_PATH -------------------------------------------------- ---------------------------------------- SYS UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE SYS BDUMP_DIR的/ opt / ORACLE / ADMIN /康纳/ bdump
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
本案例具体创建如下:create or replace directory exp_dir as '/tmp';
目录创建以后,就可以把读写权限授予特定用户,具体语法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;
例如:grant read, write on directory exp_dir to eygle;
此时用户eygle就拥有了对该目录的读写权限。
让我们看一个简单的测试:
SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file'; Directory created. SQL> declare 2 fhandle utl_file.file_type; 3 begin 4 fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w'); 5 utl_file.put_line(fhandle , 'eygle test write one'); 6 utl_file.put_line(fhandle , 'eygle test write two'); 7 utl_file.fclose(fhandle); 8 end; 9 / PL/SQL procedure successfully completed. SQL> ! [oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt eygle test write one eygle test write two [oracle@jumper 9.2.0]$
类似的我们可以通过utl_file来读取文件:
SQL> declare 2 fhandle utl_file.file_type; 3 fp_buffer varchar2(4000); 4 begin 5 fhandle := utl_file.fopen ('UTL_FILE_DIR','example.txt', 'R'); 6 7 utl_file.get_line (fhandle , fp_buffer ); 8 dbms_output.put_line(fp_buffer ); 9 utl_file.get_line (fhandle , fp_buffer ); 10 dbms_output.put_line(fp_buffer ); 11 utl_file.fclose(fhandle); 12 end; 13 / eygle test write one eygle test write two PL/SQL procedure successfully completed.
可以查询dba_directories查看所有directory.
SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS UTL_FILE_DIR /opt/oracle/utl_file SYS BDUMP_DIR /opt/oracle/admin/conner/bdump SYS EXP_DIR /opt/oracle/utl_file
可以使用drop directory删除这些路径.
SQL> drop directory exp_dir; Directory dropped SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS UTL_FILE_DIR /opt/oracle/utl_file SYS BDUMP_DIR /opt/oracle/admin/conner/bdump
创建或替换为“/ tmp目录”的目录EXP_DIR;
目录创建ÆÆ以后,就可以把读写权限,“授予特定用户,具体语法如下:GRANT READ,WRITE]目录目录的用户名, 例如:
授予读,写上目录EXP_DIR到EYGLE;
此时用户EYGLE就拥有了对该目录的读写权限。
让我们看一个简单的测试:
类似的我们可以通过UTL_FILE来读取文件:
可以查询dba_directories查看所有目录。
可以使用下拉目录中删除这些路径。
SQL>创建或替换目录UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE'; 目录已创建。 SQL>声明 2 fhandle utl_file.file_type; 3开始 4 fhandle:= utl_file.fopen('UTL_FILE_DIR','example.txt文件','w'的); 5 utl_file.put_line(fhandle,“EYGLE测试写一个'); 6 utl_file.put_line(fhandle,“EYGLE测试写两个'); 7 utl_file.fclose(fhandle); 8月底; 9 / PL / SQL过程已成功完成。 SQL>! 甲骨文跳线9.2.0] $ /选择/ ORACLE /的UTL_FILE / example.txt中 EYGLE测试写一个 EYGLE测试写了两 [ORACLE跳线9.2.0]
类似的我们可以通过UTL_FILE来读取文件:
SQL>声明 2 fhandle utl_file.file_type; 3 fp_buffer VARCHAR2(4000); 4开始 5 fhandle:= utl_file.fopen('UTL_FILE_DIR','example.txt文件','R'); 6 7 utl_file.get_line(fhandle,fp_buffer); DBMS_OUTPUT.PUT_LINE(fp_buffer); 9 utl_file.get_line(fhandle,fp_buffer); 10 DBMS_OUTPUT.PUT_LINE(fp_buffer); 11 utl_file.fclose(fhandle); 12月底; 13 / EYGLE测试写一个 EYGLE测试写了两 PL / SQL过程已成功完成。
可以查询dba_directories查看所有目录。
SQL> SELECT * FROM dba_directories; 老板的directory_name DIRECTORY_PATH -------------------------------------------------- ---------------------------------------- SYS UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE SYS BDUMP_DIR的/ opt / ORACLE / ADMIN /康纳/ bdump SYS EXP_DIR的/ opt / ORACLE / UTL_FILE
可以使用下拉目录中删除这些路径。
SQL>降目录EXP_DIR; 放置目录 SQL> SELECT * FROM dba_directories; 老板的directory_name DIRECTORY_PATH -------------------------------------------------- ---------------------------------------- SYS UTL_FILE_DIR的/ opt / ORACLE / UTL_FILE SYS BDUMP_DIR的/ opt / ORACLE / ADMIN /康纳/ bdump