2013-11-12 2 views
2

Я использую следующий синтаксис для загрузки таблицы, если значение существует в данной позиции:SQL * Loader Когда пункт за истекшую запись

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) 

ответ

1

Попробуйте использовать временную таблицу, чтобы загрузить все ваши данные. Затем переносите данные из вашей временной таблицы в таблицу с помощью общей вставки в ... select * из временной таблицы, где столбец не равен null;

Загрузитель Oracle на самом деле не лучший способ попробовать сделать манипуляции/предложения и т. Д. В файлах данных. Скорее убедитесь, что ваш файл является как можно более правильным, прежде чем вы его загрузите (например, запустите его через Perl-парсер или что-то еще до этого) или загрузите в таблицу temp свои манипуляции с временной таблицей в финальную таблицу.

+0

Правильно, постобработка - это только одно условие «НЕ НУЛЛ». Я только думал, что что-то не хватает, такая фильтрация кажется очень простой в процессе загрузки. Но хорошо ... SQL * Loader отстой ... –

Смежные вопросы