sqlldr - 跳过具有空值的行
sqlldr - skip lines with null values
我需要将数据从分隔文件加载到 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 和 FIELD3 至少有一行为 NULL。
假设我的数据文件是:
ABC^DEF^GHI
ABC^^
我的第二条记录按预期被丢弃,并显示以下消息:
1 Row successfully loaded.
0 Rows not loaded due to data errors.
1 Row not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
但是,sqlldr 退出代码仍然是 2 ,导致我的脚本失败。
有没有办法加载有效记录(FIELD2 不为空的行)并优雅地成功退出?
非常感谢任何帮助。
谢谢。
如您所见,任何失败的 WHEN 条件都会导致 sqlldr 以非零值退出。
您需要:
预处理文件并在加载前删除那些带有 NULL 字段的行
将所有记录加载到您的 table 然后删除带有 NULL
的记录
第二列
将所有记录加载到暂存中 table 然后 select 您想要的行
进入主要 table
使用外部 table 和 select 将您想要的行放入主
table
每种方法都有其优点和缺点,因此您必须进行一些研究,看看哪种方法最适合您的情况。
我需要将数据从分隔文件加载到 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 和 FIELD3 至少有一行为 NULL。
假设我的数据文件是:
ABC^DEF^GHI
ABC^^
我的第二条记录按预期被丢弃,并显示以下消息:
1 Row successfully loaded.
0 Rows not loaded due to data errors.
1 Row not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
但是,sqlldr 退出代码仍然是 2 ,导致我的脚本失败。 有没有办法加载有效记录(FIELD2 不为空的行)并优雅地成功退出?
非常感谢任何帮助。
谢谢。
如您所见,任何失败的 WHEN 条件都会导致 sqlldr 以非零值退出。
您需要:
预处理文件并在加载前删除那些带有 NULL 字段的行
将所有记录加载到您的 table 然后删除带有 NULL
的记录 第二列将所有记录加载到暂存中 table 然后 select 您想要的行
进入主要 table使用外部 table 和 select 将您想要的行放入主
table
每种方法都有其优点和缺点,因此您必须进行一些研究,看看哪种方法最适合您的情况。