目前我有一些平面文件,它们使用 SQLoader 加载到数据库中,但我想用外部表替换 SQLoader 脚本,但是我在将 SQLoader“翻译”到外部表时遇到问题。
因此,例如,我有一个平面文件,如下所示:
~#~col1>|col2>|col3...
我有一个 SQloader .ctl 文件,看起来像这样:
LOAD DATA
APPEND
CONTINUEIF NEXT PRESERVE (1:3) <> '~#~'
INTO TABLE my_tab
FIELDS TERMINATED BY ">|" TRAILING NULLCOLS
(
col1 "LTRIM(Trim(:col1),'~#~')",
col2 "TRIM(:col2)",
col3 "TRIM(:col3)",
col4 CONSTANT #$TASKID$#,
col5 CONSTANT #$SESSION$#,
col6 RECNUM,
col7 SEQUENCE(MAX)
)
目前我已经尝试了很多东西-
create table my_tab(
col1 varchar2(100)
,col2 number(38)
,col3 number(38)
,...
)
organization external(
type oracle_loader
default directory my_dir
access parameters(
records delimited by newline
fields terminated by '>|'
missing field values are null
reject rows with all null fields
)
location('my_file.txt')
);
所以我有以下问题:
定义外部表时如何调用TRIM函数?(甚至可能吗?)或者唯一的方法是为数据暂存创建另一个视图/表,并进行所有数据转换,然后将数据插入目标表?
提前致谢!