我需要将分隔文件中的数据加载到Oracle 12c。
我的Ctl文件如下所示:
OPTIONS (skip=2,rows=1000, bindsize=100000, readsize=100000, discardmax=1, silent=header,feedback)
load data
CHARACTERSET UTF8
insert into table XYZ
WHEN FIELD2 <> ''
fields terminated by '^' optionally enclosed by ','
trailing nullcols
(
FIELD1 filler,
FIELD2,
FIELD3,
MODIFIED_DATE "SYSDATE"
)
在我的数据文件中,我期待至少一行为FIELD2&amp; FIELD3。
假设我的数据文件是:
ABC DEF ^ ^ GHI
ABC ^^
我的第二条记录按预期被丢弃,并带有以下消息:
已成功加载1行。
0由于数据错误而未加载行。
未加载1行,因为所有WHEN子句都失败了。
0未加载行,因为所有字段都为空。
但是,sqlldr退出代码仍为2,导致我的脚本失败。 有没有办法加载有效记录(FIELD2的行不为空)&amp;优雅成功退出?
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
任何失败的WHEN条件都会导致sqlldr退出非零,正如您所发现的那样。
您需要:
在加载
将所有记录加载到表中,然后删除具有NULL的记录 第二栏
将所有记录加载到临时表中,然后选择所需的行 进入主表
使用外部表格,然后在主页面中选择所需的行 表
每种方法都有其优点和缺点,因此您必须进行一些研究,看看哪种方法最适合您的情况。