最新消息:把Logo换了一下,虽然丑了点,但至少完全是自己的设计

Oracle外部表的设置

Oracle 宇托 256浏览 暂无评论

最近一个项目中要用到Oracle外部表,所以查了一下资料。

外部表(external tables)是对sql*loader 的一个补充,可以让我们访问数据库外部的数据资源。不过外部表存在着诸多的限制,所以我们使用前必须对其有充分的了解。外部表中的一些限制:

  1. 不能在外部表上执行DML操作。
  2. 不能在外部表上创建index。
  3. 不支持analyze分析语句,但是可以使用dbms_stats。
  4. 不支持虚拟列。

oracle 10g 以后可以允许我们把数据库中的表,write out 成为外部表。

创建外部表前的准备工作

在创建外部表前我们需要做一些准备工作。

  1. 在Oracle新建一个目录,并保证Oralce用户对该目录有读写权限。例
SQL
create or replace directory data_dir
as 'c:\outdate';
  1. 把外部表的数据实际数据放置在这个目录下。比如如下CSV数据,保存成ext_user.csv
11,smith,1111@qq.com,m,23
22,tom,2222@qq.com,w,27
33,peter,3333@qq.com,m,24
44,jack,4444@qq.com,w,25
55,king,5555@qq.com,m,26

创建外部表

我们可以用下面的SQL来创建外部表。

SQL
create table ext_user -- 外部表的创建语句和通常的create table 语句大部分相同。
(
    id     varchar2(16),
    name   varchar2(30),
    email  varchar2(20),
    gender char(1),
    age    number(2)
)
organization external --指定为外部表。
(
    type oracle_loader -- 指定外部表的加载类型。有oracle_loader,oracle_datapump。
    default directory data_dir --指定外部表默认的读写位置,是通过目录对象指定的,而不是实际的目录。
    access parameters --指定根据什么规则把外部文件中的数据加载到外部表中。
    (
        records delimited by newline
        fields terminated by ','
    )
    location ('ext_user.csv') --指定外部表加载的数据源的位置。
)

现在我们可以用SQL直接查询了,比如如下SQL

SQL
select * from ext_user;

参考地址:介绍oracle外部表

转载请注明:宇托的狗窝 » Oracle外部表的设置

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址