ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Windows下将其他表导入到oracle—外部组织表技术

Windows下将其他表导入到oracle—外部组织表技术

原创 Linux操作系统 作者:oracleclub 时间:2011-11-25 11:04:09 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: OCM2天考试的内容
请登录后发表评论 登录
全部评论

注册时间:2011-11-22

  • 博文量
    61
  • 访问量
    96544