ITPub博客

首页 > 数据库 > 数据库开发技术 > 9iR2数据库实用工具--有关外部表的读书笔记

9iR2数据库实用工具--有关外部表的读书笔记

原创 数据库开发技术 作者:zsj3874 时间:2007-08-31 10:56:32 0 删除 编辑
其实也无所谓读书笔记,只是摘抄了些可能经常用到的一些个例子而已[@more@]

外部表:
11-1 外部表是只读的,不能对它进行任何的DML操作和索引的创建(因为它没有rowid),只能进行查询工作.它是作为对SQL*LOADER的一种补充.

11-3 为了最小化数据转化和处理的量,外部表访问驱动仅仅处理查询中引用到的列,如果这个列没有被引用,那么即使这个列的转化会出错,这个没有引用它的查询也不会返回错误

11-4 目录是谁创建的,谁有GRANT READ/WRITE ON DIRECTORY directory_name to user_name
location子句中,源文件/输出文件的命名格式directory:file,其中directory是可选的,如果没有的话,使用默认目录
源文件/输出文件必须是数据库服务器上的文件,且oracle用户需要对目录有读写的权限.
访问驱动是运行在数据库服务器内的,而不是像sql*loader之类的客户端程序.

CREATE TABLE zsj_test_ext_tab1(id NUMBER,NAME VARCHAR2(20))
ORGANIZATION external
(
TYPE oracle_loader
DEFAULT DIRECTORY external_table_dir
ACCESS parameters(fields terminated BY ',') 或者","
location ('ext_tab.txt')
);


RECORDS DELIMITED BY NEWLINE(默认)
badfile,discardfile是每次重写的,而logfile是追加的


12-6:newline在UNIX中是" ",在windows中是" "

12-10:假如说数据文件中任意一个记录都大于512KB,那么你必须指定一个更大的readsize(默认是524288,即512KB)
date_cache用于直接路径加载时date,timestamp要求类型转换的需要

12-16:空格 whitespace

12-28:hire_date CHAR(10) DATE_FORMAT DATE MASK "mm/dd/yyyy" 或者 hire_date DATE "mm/dd/yyyy"


CREATE TABLE zsj_test_ext_tab1
(
id NUMBER,
NAME VARCHAR2(15),
birth_day date
)
ORGANIZATION external
(
TYPE oracle_loader
DEFAULT DIRECTORY external_table_dir
ACCESS parameters
(records delimited BY newline fields terminated BY ',' lrtrim(id,NAME,birth_day CHAR(19) date_format DATE mask 'yyyy-mm-dd hh24:mi:ss'))
location ('ext_tab.txt')
);


CREATE TABLE zsj_test_ext_tab2
(
id NUMBER,
NAME VARCHAR2(20),
birth_day date
)
ORGANIZATION external
(
TYPE oracle_loader
DEFAULT DIRECTORY external_table_dir
ACCESS parameters
(
records delimited BY newline
fields terminated BY ','
lrtrim
missing field Values are NULL
(
id,NAME,birth_day DATE 'yyyy-mm-dd hh24:mi:ss'
)
)
location ('ext_tab.txt')
)

parallel
reject LIMIT UNLIMITED;

补一个通过外部表查看告警日志文件的例子:

CREATE table zsj_ora_alert
(text VARCHAR2(1000))
ORGANIZATION external
(
TYPE oracle_loader
DEFAULT DIRECTORY zsj_ora_alert_dir
ACCESS parameters
(
records delimited BY newline
fields (text position(1:1000))
)
location ('alert_zhao.log')
)
reject LIMIT unlimited;

相关的视图:dba_external_tables,dba_external_locations,

dba_directories

一般情况下,可以说外部表取代了sqlldr的数据加载的功能,除了以下两种情况外:

1.通过网络加载数据的情形,外部表加载数据时要求源文件必须是数据库服务器可访问的,如果你要加载的数据来自客户端的话,只能实用sqlldr

2.涉及到LOB的加载,只能使用SQL*LOADER

所以就简单的记一个SQL*LOADER加载LOB的例子:

CREATE TABLE load_lob(file_name VARCHAR2(30),created_date DATE,file_contents clob);

loader.ctl文件内容:

load data
infile 'D:zsjexternal_table_dirloader.dat' "str x'7C0D0A'"
badfile 'D:zsjexternal_table_dirloader.bad'
into table load_lob
truncate
fields terminated by ',' optionally enclosed by '"'
(
file_name "upper(:file_name)",
created_date date 'yyyy-mm-dd',
file_contents char(10000)
)

简单的源文件内容,loader.dat:

"读书笔记.txt",2007-08-20,"Oracle9i Database: Advanced Backup
and Recovery Using RMAN
Student Guide

D16507GC10
Production 1.0
March 2003
D37796

第一章:RMAN的概述
1-3:
它是一种用来备份,复原,恢复数据库文件的oracle实用工具.
它是一个pro*c应用程序(C/S应用程序),把命令行脚本转换为一系列的PL/SQL调用
它是独立于OS的
它存储它的操作信息于目标数据库的控制文件中,当然可选的是,它也可以把这些信息存储在恢复目录中

1-4,1-5:RMAN特色
新的数据文件的自动检测和包含
联机热备份期间,不生成额外的重做,也无需将表空间设置为热备份模式

1-6:RMAN的体系结构
连接到目标数据库的RMAN连接一直是SYSDBA的


"|
"my byword",2007-09-20,"生而知死,死而知耻,耻而知勇,勇而知后生!"|
"my byword also",2007-09-21,"上天给了人遐想的权力,也给了人现实的义务;
上天给了人现实的义务,也给了人遐想的权力.
其实全在于你怎样去运用罢了!"|

再简单的记一个sqlldr加载外联的LOB的例子:

CREATE TABLE zsj_lob (
file_name VARCHAR2(30) ,
file_contents BLOB );

load.ctl:

load data
infile 'D:zsjexternal_table_dirfile_dir.dat'
badfile 'D:zsjexternal_table_dirload.bad'
into table zsj_lob
truncate
(
file_name position(27:60) "upper(:file_name)",
file_path filler position(1:100),
file_contents LOBFILE(file_path) TERMINATED BY EOF
)

其中file_path filler作为中间变量,不加载的

file_dir.dat只是要加载的文件的路径


D:zsjexternal_table_dir小火车_4.gif
D:zsjexternal_table_dir静态.gif
D:zsjexternal_table_dirDatabase New Features.pdf
D:zsjexternal_table_dirscalingOracle8i.pdf

加载后的结果:

select file_name,dbms_lob.getlength(file_contents) file_length from zsj_lob;

FILE_NAME FILE_LENGTH
------------------------------ -----------
小火车_4.GIF 6833
静态.GIF 2945
DATABASE NEW FEATURES.PDF 1049953
SCALINGORACLE8I.PDF 2953233

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10597822/viewspace-967213/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 寓言故事集
请登录后发表评论 登录
全部评论
  • 博文量
    16
  • 访问量
    44166