Oracle外部表

https://developer.aliyun.com/article/1114792?spm=a2c6h.14164896.0.0.335f1abemY46wB

创建一个文件

vi 1.txt

NAME;NAME_DESC
Latiny1;latiny test file
Latiny2;latiny test file
Latiny3;latiny test file
Latiny4;latiny test file
Latiny5;latiny test file
Latiny6;latiny test file
Latiny7;latiny test file
Latiny8;latiny test file
Latiny9;latiny test file
Latiny10;latiny test file

 创建directory

 创建一个Directory:必须用sys用户创建,用户存放外部数据文件。
  create directory EXT_LOG as '/home/oracle/';
给用户授权目录的使用权限,否则用户不能访问该目录以及其下的文件
  grant write,read on directory EXT_LOG to HR;

 导入外部文件创建表

DROP TABLE ALERT_LOG;
create table ALERT_LOG
(
name char(256),
name_desc char(256)
)
organization external
(
type oracle_loader
default directory EXT_LOG
access parameters
(
records delimited by newline
badfile dir_ctrr_data:'test..bad'
logfile dir_ctrr_data:'test..log'
discardfile dir_ctrr_data:'test..dsc'
skip 1
fields terminated by';'
reject rows with all null fields
(
NAME char(256),
NAME_DESC char(256)
)
)
location ('1.txt')
)
reject limit unlimited
parallel;

 

SQL> select * from ALERT_LOG;

NAME		     NAME_DESC
-------------------- --------------------
Latiny1 	     latiny test file
Latiny2 	     latiny test file
Latiny3 	     latiny test file
Latiny4 	     latiny test file
Latiny5 	     latiny test file
Latiny6 	     latiny test file
Latiny7 	     latiny test file
Latiny8 	     latiny test file
Latiny9 	     latiny test file
Latiny10	     latiny test file

10 rows selected.

 

 参数说明:

1) organization external  -- 关键字,必须要有。以表明定义的表为外部表。
2) type           -- 外部表的类型
oracle_loader        -- 定义外部表的缺省方式,只能只读方式实现文本数据的装载。
oracle_datapump      -- 支持对数据的装载与卸载,数据文件必须为二进制dump文件。可以从外部表提取数据装载到内部表,也可以从内部表卸载数据作为二进制文件填充到外部表。


3) default directory        --缺省的目录指明了外部文件所在的路径
4) location          -- 定义了外部表的位置
5) access parameters         -- 描述如何对外部表进行访问
records  -- 关键字后定义如何识别数据行
delimited by \'xxx\'    --换行符,常用newline定义换行,并指明字符集。对于特殊的字符则需要单独定义,如特殊符号,可以使用ox\'十六位值\',例如tab(/t)的十六位是9,则delimitedby0x\'09\';cr(/r)的十六位是d,那么就是delimitedby0x\'0d\'。
skip x   -- 跳过x行数据,有些文件中第一行是列名,需要跳过第一行,则使用skip 1。
fields   -- 关键字后定义如何识别字段,常用的如下:
fields:terminated by \'x\'   --字段分割符。
enclosed by \'x\'        --字段引用符,包含在此符号内的数据都当成一个字段。例如一行数据格式如:"abc","a""b,""c,"。使用参数terminated by \',\' enclosed by \'"\'后,系统会读到两个字段,第一个字段的值是abc,第二个字段值是a"b,"c,。
lrtrim               --删除首尾空白字符。
missing field values are null  --某些字段空缺值都设为null。对于字段长度和分割符不确定且准备用作外部表文件,可以使用ultraedit、editplus等来进行分析测试,如果文件较大,则需要考虑将文件分割成小文件并从中提取数据进行测试。


6) fields terminated by ","        --描述字段的终止符
7) reject limit unlimited         --描述允许的错误数,此处为无限制

 

https://www.likecs.com/show-405464.html

 

posted @ 2023-04-18 16:48  捌玖  阅读(56)  评论(0编辑  收藏  举报