oracle-对象表-外部表
http://www.blogjava.net/decode360/archive/2008/10/16/286802.html
create or replace type person as object(
name varchar2(10),
sex varchar2(2),
birthday date,
age number(2)
);
两种创建对象表的方式
第一,
create table t(
person_col person,
emp_id number,
dep_id number
);
第二,
create table t of person;
delete from t;
insert into t values('ww','f',sysdate-1,23);
insert into t values('ni','m',sysdate-2,24);
insert into t values('ss','f',sysdate-3,25);
insert into t values (
person('张三','男',sysdate-1,23),
100,
10);
insert into t values (
person('张四','女',sysdate-2,44),
101,
11);
insert into t values (
person('wo','fe',sysdate-3,44),
102,
11);
insert into t values (
person('ni','f',sysdate-4,45),
103,
12);
delete from t where emp_id=101;
在sqlplus中用下面语句可以看到内容
select * from t;
但在sqldeveloper中看不到person_col列的值,是如下的值
[KYC_ACC.PERSON] 102 11
[KYC_ACC.PERSON] 103 12
一定要用别名,否则引起岐义(schema名字)
select t1.person_col.age from t t1;
###################################
说明了schema object的依赖关系
create table test_table(col1 integer,col2 integer);
create or replace procedure test_proc
as
begin
for x in (select col1,col2 from test_table)
loop
null;
end loop;
end;
/
--反复查看这个过程的status列是否valid或invalid
select * from user_objects
where object_type='PROCEDURE';
--下面添加列没有依赖
alter table test_table add col3 number;
--但是修改列1时就有依赖关系了
alter table test_table modify col1 varchar2(20);
--这时要重新执行过程,才会变成valid
execute test_proc;
################################
创建普通表
create table employees (
employee_id number(6),
first_name varchar2(20),
last_name varchar2(25)
constraint emp_last_name_nn not null,
email varchar2(25)
default 'aa@qq.com'
constraint emp_email_nn not null,
phone_number varchar2(20),
hire_date date
--defalut sysdate
constraint emp_hire_date_nn not null,
job_id varchar2(10)
constraint emp_job_nn not null,
salary number(8,2),
commission_pct number(2,2),
manager_id number(6),
department_id number(4),
constraint emp_salary_min check (salary>0),
constraint emp_email_uk unique (email)
);
################################
创建外部表
1先授予权限
grant read,write on directory data_pump_dir to test
2
[oracle@oracle1 dpdump]$ cat student.data
10001@#$kerry@#$male@#$28@#$1
10002@#$jimmy@#$male@#$22@#$1
10003@#$ken@#$male@#$21@#$1
10004@#$merry@#$femal@#$20@#$1
10005@#$ll@#$male@#$30@#$1
this is a bad file
3然后将外部数据文件student.data放入/u01/app/oracle/admin/kyc/dpdump/这个data_pump_dir目录中
4创建外部表
CREATE TABLE EXTER_TEST
(
ID NUMBER(5) ,
NAME VARCHAR(12) ,
SEX VARCHAR(8) ,
AGE NUMBER(3) ,
GRADE NUMBER(1)
) ORGANIZATION EXTERNAL
(
type oracle_loader
default directory data_pump_dir
access parameters
(
records delimited by newline
fields terminated by '@#$'
)
location ('student.data')
);
5查询
select * from exter_test;
出现下面错误,是因为student.data文件中有不符合规范的记录,可以删除“this is a bad file”这一条记录,但是这是为了测试下面情况,所以可以通过执行
alter table exter_test reject limit unlimited;跳过一些限制。
6如果源文件格式有误,会有日志写入log文件,并且bad文件中记录错误的行
[oracle@oracle1 dpdump]$ ll
total 24
-rw-r----- 1 oracle oinstall 116 Jan 26 15:16 dp.log
-rw-r----- 1 oracle oinstall 19 Apr 18 08:16 EXTER_TEST_27856.bad
-rw-r----- 1 oracle oinstall 3391 Apr 18 08:22 EXTER_TEST_27856.log
-rw-r----- 1 oracle oinstall 19 Apr 18 08:14 EXTER_TEST_27860.bad
-rw-r----- 1 oracle oinstall 1249 Apr 18 08:14 EXTER_TEST_27860.log
-rwxrwxrwx 1 oracle oinstall 146 Apr 18 08:22 student.data
[oracle@oracle1 dpdump]$ pwd
/u01/app/oracle/admin/kyc/dpdump
select * from all_external_locations;
select * from user_external_locations;
select * from dba_external_locations;
select * from user_external_tables;
select * from all_external_tables;
select * from dba_external_tables;
外部表限制:
1. 只能对表进行SELECT,不能进行DELETE、UPDATE、INSERT这些DML操作。
2. 因为外部表需要在ORACLE数据库“服务端”创建目录,OS文件必须放在这些目录中。即这些文件只能放在数据库服务端。如果数据文件不位于服务器,则无法使用外部表
3. 外部表上不能创建索引。但可以建立视图
4. 外部表不支持LOB对象。如果要使用LOB类型,则不能使用外部表。
eg:删除外部表的记录
delete from exter_test where id=10001;
################################
oracle-对象表-外部表的更多相关文章
- PG TO Oracle 增量同步-外部表
背景 最近在负责公司数据Oracle转PG:老平台数据库:Oracle11g:新平台数据库:PostgreSQL12.由于平台统计规则有变动:所以正在推广的游戏数据无法全部迁移过来:只能在老平台上运行 ...
- 分区表,桶表,外部表,以及hive一些命令行小工具
hive中的表与hdfs中的文件通过metastore关联起来的.Hive的数据模型:内部表,分区表,外部表,桶表受控表(managed table):包括内部表,分区表,桶表 内部表: 我们删除表的 ...
- Hive内部表外部表转化分析(装)
link:http://anyoneking.com/archives/127hive表分为内部表和外部表.外部表在删除的时候并不会删除到hdfs中的文件,比较安全,所以对于重要的需要进行分析的日志建 ...
- Hive基础(5)---内部表 外部表 临时表
1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...
- hive内部表&外部表介绍
未被external修饰的是内部表(managed table),被external修饰的为外部表(external table):区别:内部表数据由Hive自身管理,外部表数据由HDFS管理:内部表 ...
- Oracle外部表详解(转载)
(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中 ...
- Oracle 之 外部表
一.外部表概述 外部表只能在Oracle 9i 之后来使用.简单地说,外部表,是指不存在于数据库中的表. 通过向Oracle 提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数 据库表 ...
- Oracle外部表详解
外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数 ...
- 管理外部表(External Tables)
Oracle数据库允许对外部表中的数据进行只读访问.外部表定义为不驻留在数据库中的表,并且可以是为其提供访问驱动程序的任何格式.通过为数据库提供描述外部表的元数据,数据库能够公开外部表中的数据,就好像 ...
随机推荐
- 4.4 C++虚析构函数
参考:http://www.weixueyuan.net/view/6373.html 总结: 构造函数是不能声明为虚函数的,析构函数可以被声明为虚函数. 将基类的析构函数声明为虚函数之后,派生类的析 ...
- 进程创建过程详解 CreateProcess
转载请您注明出处:http://www.cnblogs.com/lsh123/p/7405796.html 0x01 CreateProcessW CreateProcess的使用有ANSI版本的Cr ...
- Redis部署与基本操作
1.安装 1)不指定安装位置,则会把redis的可执行文件安装到 redis-2.8.6/src/目录下 [root@CentOS6 ~]# ls anaconda-ks.cfg httpd-2. ...
- shell 中变获取值及运算的几种方法
num=$(tail ./image/1.txt -n 1) num=$(($num+1))
- weex--手机调试
Weex Playground 我的是小米应用市场,没有搜索到,不过这是官方的二维码,我是扫描这个二维码下载的.
- Nginx配置https的wordpress站点,wp-content目录下资源404解决方案
wordpress 下配置 ssl证书, server { listen ; server_name demo.example.com; ssl on; root /data/; ssl_certif ...
- git命令收集(记得持续更新)
这里收集了一些常用的git命令: git remote add origin git@192.168.1.128:sabo/ycdd-server.git git push -u origin mas ...
- Sublime Text 3(中文)在Windows下的配置、安装、运行
Sublime Text 3(中文)下载.安装.运行! 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 具体 ...
- Gym - 101806R :Recipe(分治+斜率优化)
题意:有一个厨师,他买菜-做菜-买菜-做菜....-做菜,一共有N天,他的冰箱里只能有一个菜,在他做菜的第二天才会买菜,如果菜不做,放在冰箱里,每天新鲜程度会下降1. 第一天也会买菜,第i天的菜新鲜程 ...
- 测试那些事儿—Linux搭建环境基础步骤
Linux搭建环境基础步骤 准备工具:SecureCRT工具(Linux工具,连接服务器)FTP传输工具(上传文件到服务器)MySQL连接工具 安装包(以下文件均为压缩包rpm格式和tar.gz):J ...