这种文件的外部表应该如何创建

[复制链接]
查看11 | 回复7 | 2010-3-1 11:08:29 | 显示全部楼层 |阅读模式
看了很多书,BAIDU了好多,可是发现外部表好像对应的操作系统文件都是有分隔符分割的,可是我正好这个文件不是用分隔符分割的,而是它的每个字段都是定长的,这种外部表应该如何创建,谢谢指导
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
SPOOL + DBMS_OUTPUT.PUT_LINE OR UTL_FILE
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
找了一下,呵呵,发现个例子:
CREATE TABLE (first_name CHAR(15), last_name CHAR(20), year_of_birth CHAR(4))
ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab_dir

ACCESS PARAMETERS (RECORD FIXED 20 FIELDS (first_name CHAR(7),

last_name CHAR(8),

year_of_birth CHAR(4))

LOCATION ('foo.dat'));
File:
AlvinTolliver1976
KennethBaer1963
Mary Dube1973

还没测过~~
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
测试了一下,不行啊。
提示ora-29913ora-29400KUP-00554KUP-01005
麻烦各位大虾在帮帮忙阿,谢谢啦
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
将record修改为records后,提示新的错误:ora-29913 ora-29400 kup-04018
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
Sorry,下次一定先测再贴~~
又找了一个:

create table test_ext (
first_name CHAR(15),
last_name CHAR(20),
year_of_birth CHAR(4)
)
organization external (
type oracle_loader
default directory COLL_OUTPUT
access parameters (
records delimited by newline
fields (
first_name position(1: 7) char(7),
last_name position(8:15) char(8),
year_of_birth position(16:19) char(8)
)
)
location ('testExt.txt')
)
reject limit unlimited;

试过了:


SQL> SELECT * FROM test_ext;

FIRST_NAMELAST_NAME
YEAR_OF_BIRTH
--------------- -------------------- -------------
Alvin Tolliver
1976
Kenneth Baer
1963
Mary
Dube
1973
复制代码
P.S.
Google除了找有色图片外还是有点用的
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
搞定,万分感谢
回复

使用道具 举报

千问 | 2010-3-1 11:08:29 | 显示全部楼层
如果你这个文件是可以用SQL LOADER加载的,那么运行SQLLDR时指定这个参数:
external_table=generate_only
它就不会加载数据,而是在日志文件中生成一个外部表的DDL。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行