外部表可以实现,通过数据库对象直接访问目录文件里的格式数据,加载方式分为两种oracle_loader和oracle_datapump,oracle_loader方式通过sqlldr引擎方式加载,访问flat格式文件;oracle_datapump通过datapump接口来加载,访问通过oracle_datapump方式卸载的dmp文件;
------oracle_loader
----自定义两个格式文件内容如下:
====a.dat====
360,Jane,Janus,ST_CLERK,121,17-MAY-2001,3000,0,50,jjanus
361,Mark,Jasper,SA_REP,145,17-MAY-2001,8000,.1,80,mjasper
362,Brenda,Starr,AD_ASST,200,17-MAY-2001,5500,0,10,bstarr
363,Alex,Alda,AC_MGR,145,17-MAY-2001,9000,.15,80,aalda
====b.dat====
401,Jesse,Cromwell,HR_REP,203,17-MAY-2001,7000,0,40,jcromwel
402,Abby,Applegate,IT_PROG,103,17-MAY-2001,9000,.2,60,aapplega
403,Carol,Cousins,AD_VP,100,17-MAY-2001,27000,.3,90,ccousins
404,John,Richardson,AC_ACCOUNT,205,17-MAY-2001,5000,0,110,jrichard
----创建需要的目录
CONNECT / AS SYSDBA;
-- Set up directories and grant access to hr
CREATE OR REPLACE DIRECTORY admin_dat_dir
AS '/u01/backup';
CREATE OR REPLACE DIRECTORY admin_log_dir
AS '/u01/backup';
CREATE OR REPLACE DIRECTORY admin_bad_dir
AS '/u01/backup';
GRANT READ ON DIRECTORY admin_dat_dir TO sun;
GRANT WRITE ON DIRECTORY admin_log_dir TO sun;
GRANT WRITE ON DIRECTORY admin_bad_dir TO sun;
----通过loader方式创建外部表,直接通过表来查询操作
conn sun/sun
-- create the external table
CREATE TABLE admin_ext_employees
(employee_id NUMBER(4),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
job_id VARCHAR2(10),
manager_id NUMBER(4),
hire_date DATE,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
department_id NUMBER(4),
email VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY admin_dat_dir
ACCESS PARAMETERS
(
records delimited by newline
badfile admin_bad_dir:'empxt%a_%p.bad'
logfile admin_log_dir:'empxt%a_%p.log'
fields terminated by ','
missing field values are null
( employee_id, first_name, last_name, job_id, manager_id,
hire_date char date_format date mask "dd-mon-yyyy",
salary, commission_pct, department_id, email
)
)
LOCATION ('a.dat', 'b.dat')
)
PARALLEL
REJECT LIMIT UNLIMITED;
create table emp as select * from admin_ext_employees;
SQL>
SQL> SELECT * FROM emp;
EMPLOYEE_ID FIRST_NAME LAST_NAME JOB_ID M
----------- -------------------- ------------------------- ---------- -
401 Jesse Cromwell HR_REP
402 Abby Applegate IT_PROG
403 Carol Cousins AD_VP
404 John Richardson AC_ACCOUNT
360 Jane Janus ST_CLERK
361 Mark Jasper SA_REP
362 Brenda Starr AD_ASST
363 Alex Alda AC_MGR
SQL> SELECT * FROM user_external_tables ;
no rows selected
[ora11@prim backup]$ ls -l
total 20
-rw-r--r-- 1 ora11 oinstall 228 Sep 6 21:17 a.dat
-rw-r--r-- 1 ora11 oinstall 252 Sep 6 21:17 b.dat
-rw-r--r-- 1 ora11 oinstall 2826 Sep 6 21:19 empxt000_2756.log
-rw-r--r-- 1 ora11 oinstall 3110 Sep 6 21:19 empxt000_2763.log
-rw-r--r-- 1 ora11 oinstall 3110 Sep 6 21:19 empxt001_2765.log
------oracle_datapump
----更多是实现数据迁移的功能,通过datapump方式卸载并迁移到其他系统;
----创建datapump方式的外部表,并将数据卸载到目录文件中;
SQL> CREATE TABLE admin_ext_employees
2 (employee_id ,
3 first_name ,
4 last_name ,
5 job_id ,
6 manager_id ,
7 hire_date ,
8 salary ,
9 commission_pct ,
10 department_id ,
11 email
12 )
13 ORGANIZATION EXTERNAL
14 (
15 TYPE ORACLE_DATAPUMP
16 DEFAULT DIRECTORY admin_dat_dir
17 LOCATION ('emp2.dmp'))
18 AS SELECT * FROM emp;
Table created.
----查询文件内容,大体是产生XML格式的文件
-rw-r----- 1 ora11 oinstall 12288 Sep 6 21:33 emp2.dmp
[ora11@prim backup]$ strings emp2.dmp
"SUN"."U"
x86_64/Linux 2.4.xx
----通过loader方式创建外部表,直接通过表来查询操作
SQL> CREATE TABLE admin_ext_employees2
2 (employee_id NUMBER(4),
3 first_name VARCHAR2(20),
4 last_name VARCHAR2(25),
5 job_id VARCHAR2(10),
6 manager_id NUMBER(4),
7 hire_date DATE,
8 salary NUMBER(8,2),
9 commission_pct NUMBER(2,2),
10 department_id NUMBER(4),
11 email VARCHAR2(25)
12 )
13 ORGANIZATION EXTERNAL
14 (
15 TYPE ORACLE_DATAPUMP
16 DEFAULT DIRECTORY admin_dat_dir
17 LOCATION ('emp2.dmp')) ;
Table created.
SQL>
SQL> SELECT * FROM admin_ext_employees2 ;
EMPLOYEE_ID FIRST_NAME LAST_NAME JOB_ID
----------- -------------------- ------------------------- ----------
401 Jesse Cromwell HR_REP
402 Abby Applegate IT_PROG
403 Carol Cousins AD_VP
404 John Richardson AC_ACCOUNT
360 Jane Janus ST_CLERK
361 Mark Jasper SA_REP
362 Brenda Starr AD_ASST
363 Alex Alda AC_MGR
- form表单两种提交方式的不同
我们在使用<Form>表单的时候,最常用的提交方式就是Get和Post.我们都知道这两种方式最大的差别就是安全性,除此之外,它们还有哪些其他的区别,你知道吗? 在<Form& ...
- KETTLE多表关联的同步一张表的两种实现方式
以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:读取对方的多个视图或者表,写入目标库的一张表中,就涉及到多表的同步. 多表同步可以有以 ...
- 前端提交表单两种验证方式记录 jq或h5 required属性
JQuery: <form id="form"> <input type="text" name="aaa"> &l ...
- form表单中get和post两种提交方式的区别
一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...
- 引入外部CSS的两种方式及区别
1.CSS的两种引入方式 通过@import指令引入 @import指令是CSS语言的一部分,使用时把这个指令添加到HTML的一个<style>标签中: 要与外部的CSS文件关联起来,得使 ...
- mysql复制表的两种方式
mysql复制表的两种方式. 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二 ...
- html表单中的input元素的两种提交方式比较(get/post)
Http存在两种最常用的提交方式:Get和Post(电话面试有问到两种提交方式的区别) 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客 ...
- WDS 的两种实现方式
转自:http://blog.chinaunix.net/uid-26527046-id-3627627.html WDS 的两种实现方式 WDS(Wireless Distribution Syst ...
- 【Visual Lisp】两种出错处理方式
两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...
随机推荐
- RabbitMQ整合spring
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 自己写的一个delphi正整数快速排序
type TIntArr= array of word; procedure MyQSort(var arr: TIntArr; low: word; high: word); //word可以改 ...
- TEdit的 Clear 和 赋值 ''
function TControl.GetText: TCaption; var Len: Integer; begin Len := GetTextLen; SetString(Result, PC ...
- 最小生成树之克鲁斯卡尔(Kruskal)算法
学习最小生成树算法之前我们先来了解下 下面这些概念: 树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的 ...
- JavaScript 自定义文本框光标——初级版
文本框(input或textarea)的光标无法修改样式(除了通过color修改光标颜色).但笔者希望个人创建自己的网站时,文本框的光标有属于自己的风格.所以,尝试模拟文本框的光标,设计有自己风格的光 ...
- 踢掉某个li
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JDK中Integer类的进制转换实现
JDK中关于Integer类的进制转换方法很精巧,具体实现如下: final static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , ...
- 深度分析:Android中Mms设置页面更改短信中心号码流程
相关控件初始化方法:showSmscPref private void showSmscPref() { int count = MSimTelephonyManager.getDef ...
- python 学习日志
1.pip is already installed if you're using Python 2 >=2.7.9 or Python 3 >=3.4 binaries downloa ...
- 20155301 2016-2017-2 《Java程序设计》第9周学习总结
20155301 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC全名Java DataBase Connectivity,是联机数据库的标准规范.具 ...