2

如果给定位置存在值,我使用以下语法加载表:

INTO TABLE some_table
WHEN (2745:2769) <> BLANKS
( ... fields specification ... )

它在值实际存在(已加载记录)和此位置有空格(未加载)时起作用。但是,当行短于 2745 个字符时,仍会加载记录,这是不可取的。我怎样才能防止这种情况?

我尝试了以下所有方法,但都是一样的:

WHEN (2745:2769) <> BLANKS
WHEN (2745:2769) <> ''
WHEN (2745:2769) <> ' '
WHEN (2745:2769) IS NOT NULL (this doesn't work at all actually)
4

1 回答 1

1

尝试使用临时表将所有数据加载到其中。然后使用通用插入将数据从临时表传输到表中... select * from temporary table where column is not null;

Oracle 加载器并不是真正尝试对数据文件进行操作/子句等的最佳位置。而是在尝试加载文件之前确保文件尽可能正确(即通过 perl 解析器或之前的东西运行它),或者加载到临时表中,从临时表到最终表中进行操作。

于 2013-11-17T16:31:14.410 回答