word外部表不是预期的格式_9iR2数据库实用工具--有关外部表的读书笔记

其实也无所谓读书笔记,只是摘抄了些可能经常用到的一些个例子而已[@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值