1,创建DIRECTORY(目录)对象
SQL> conn / as sysdba
已连接。
SQL> Create directory log_dir as 'c:\u01';
目录已创建。
SQL> create directory data_dir as 'c:\u01';
目录已创建。
=======================================================
2,将目录的读权限授予scottt
SQL> grant read on directory data_dir to scott;
授权成功。
SQL> grant write on directory log_dir to scott;
授权成功。
注意:不要在system 和sys用户中直接创建外部表,因为这两个用户属于system 表空间,会加重system 表空间的负担,影响rdbms效率
=======================================================
SQL> col DIRECTORY_PATH format a10
SQL> select * from dba_directories where DIRECTORY_PATH like '%u01';
OWNER DIRECTORY_NAME DIRECTORY_
------------------------------ ------------------------------ ----------
SYS LOG_DIR c:\u01
SYS DATA_DIR c:\u01
即使授权了,目录对象的属主还是sys,查看一下,这两个目录的GRANTEE

=======================================================
conn scott/tiger;
create table dept_test
(no number(2),
name varchar(14),
loc varchar(13)
)
organization external
(TYPE oracle_loader —驱动程序是oracle_loader,oracle自带的
DEFAULT DIRECTORY data_dir ——默认的存放目录
ACCESS PARAMETERS ——定义访问参数
(RECORDS DELIMITED BY NEWLINE CHARACTEREST US7ASCII —用换行符分隔,字符集为 US7ASCII
BADFILE 'LOG_DIR' :'test.bad'—坏文件 放在LOG_DIR目录下,记录出错信息用于诊断
LOGFILE 'LOG_DIR' :'test.log'——用于诊断
FIELDS TERMINATED BY " " OPTIONALLY ENCLOSED BY '\t'——字段由空格或制表符分隔
)
LOCATION ('dept_test.txt')——数据文件名为detp_test.txt
)
REJECT LIMIT UNLIMITED;——读入整个数据文件的数据

=======================================================
查看是否被成功创建,虽然存在,没存储在任何一个tablespace中,因为是外部表

查看scott用户下所有的外部表

=======================================================
方法一:直接在txt中手工加数据
在“LOCATION ('detp_test.txt')——数据文件名为dept_test.txt”添加数据

方法二:在数据库中先建立一个表,再将表数据导出到txt中

解释:
set feedback off——关闭通过sqlplus 检索出来的结果最下面一般会有一个" 8 row selected"的提示这个是用于关闭它
set heading off——关闭列名头



运行data.sql.txt脚本成功生成了detp_test文件的两行记录
=======================================================
正常来说不会报错,如果出现如下报错就执行如下操作:

先将已创建的外部表TEST_DEPT删除,将创建外部表的定义中的“CHARACTEREST US7ASCII”去除,在运行建外部表的脚本即可
再次查看外部表TEST_DEPT,成功了

=======================================================
虽然该表已存在,可以做select 操作,但不能进行DML操作,
解决方法:create table <> as select * from DEPT_TEST;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26465805/viewspace-712055/ ,如需转载,请注明出处,否则将追究法律责任。