数据库的外部表

此处会引用部分潇湘隐者的内容。

RACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。外部表,顾名思义,存储在数据库外面的表。当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。不能对外部表建立索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在没有存储在数据库中。故在外部是无法建立索引的。如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。

(我的理解是直接读取数据库外的文件,与传统的数据文件存储方式不同,可以读取,单不能以普通的数据库表的操作来操作)

外部表特征

    (1) 位于文件系统之中(一定要在数据库服务器中,而不是其它网络路径),按一定格式分割,

          例如@#$等,文本文件或者其他类型的文件可以作为外部表。(远程文件不行)

  (2) 对外部表的访问可以通过SQL语句来完成,而不需要先将外部表中的数据装载进数据库中。

  (3) 外部数据表都是只读的,因此在外部表不能够执行DML操作,也不能创建索引。

  (4) ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS_STATS包来采集外部表的统计数据。

  (5) 可以查询操作和连接。也可以并行操作。

  (6) 数据在数据库的外部组织,是操作系统文件。

  (7) 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。

实验部分:

 1.从9i开始,ORACLE数据库若需要存取文件系统,就必须使用目录对象,以相对路径方式存取文件,强化数据库的安全性。建立目录对象、授予权限。

conn / as sysdba
create or replace directory mydir as '/home/oracle/';

给用户授予指定目录的操作权限

grant read,write on directory mydir to scott;

 

注:select * from dba_directories; 查询用户的的逻辑目录。

2:创建外部表

我创建了一个平面文件作为测试用例。

在/home/oracle/ 创建1.txt 

[oracle@11g ~]$ vi 1.txt
[oracle@11g ~]$ cat 1.txt 
10,'job','TOkyo'
3.数据库中在用户下创建外部表。

conn scott/tiger
CREATE TABLE dept_external (
   deptno     NUMBER(6),
   dname      VARCHAR2(20),
   loc        VARCHAR2(25) 
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
 DEFAULT DIRECTORY mydir
 ACCESS PARAMETERS
 (
  FIELDS TERMINATED BY ","  OPTIONALLY ENCLOSED BY '"'
  (
   deptno     INTEGER EXTERNAL(6),
   dname      CHAR(20),
   loc        CHAR(25)
  )
 )
 LOCATION ('1.txt')
)
REJECT LIMIT UNLIMITED;

Table created.
 

4.查询外部表

SCOTT@ db>select * from dept_external;

    DEPTNO DNAME        LOC
---------- -------------------- -------------------------
    10 'job'        'TOkyo'

Elapsed: 00:00:00.08
 

注:

此处可以测试往外部表中添加数据,会提示错误。

===================================================

SCOTT@ db>insert into dept_external values (20,'job','test');
insert into dept_external values (20,'job','test')
            *
ERROR at line 1:
ORA-30657: operation not supported on external organized table


 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在高斯数据库中,您可以使用Oracle FDW(Foreign Data Wrapper)扩展来连接Oracle数据库,并将Oracle作为外部来查询。以下是具体步骤: 1. 在高斯数据库上安装Oracle FDW扩展。您可以使用以下命令来安装Oracle FDW扩展: ``` CREATE EXTENSION oracle_fdw; ``` 2. 创建外部服务器对象。在高斯数据库中,外部服务器对象是用于连接到外部数据源的对象。您可以使用以下命令创建外部服务器对象: ``` CREATE SERVER oracle_server FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//<Oracle服务器IP地址>:<Oracle服务器端口号>/<Oracle服务名>'); ``` 其中,<Oracle服务器IP地址>、<Oracle服务器端口号>和<Oracle服务名>是Oracle服务器的IP地址、端口号和服务名。 3. 创建外部。在高斯数据库中,外部是指通过外部服务器对象连接到外部数据源的数据。您可以使用以下命令创建外部: ``` CREATE FOREIGN TABLE oracle_table ( id integer, name character varying(50), age integer ) SERVER oracle_server OPTIONS (schema '<Oracle所在模式>', table '<Oracle名>'); ``` 其中,<Oracle所在模式>和<Oracle名>是要连接的Oracle所在的模式和名。 4. 查询外部。创建外部后,您可以像查询普通一样查询外部,例如: ``` SELECT * FROM oracle_table; ``` 以上就是将Oracle作为外部连接到高斯数据库中的具体步骤。希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值