SQL * Loader - Как я могу игнорировать определенные строки с определенным характером - PullRequest
1 голос
/ 10 марта 2010

Если у меня есть файл CSV в следующем формате

"fd!","sdf","dsfds","dsfd"
"fd!","asdf","dsfds","dsfd"
"fd","sdf","rdsfds","dsfd"
"fdd!","sdf","dsfds","fdsfd"
"fd!","sdf","dsfds","dsfd"
"fd","sdf","tdsfds","dsfd"
"fd!","sdf","dsfds","dsfd"

Можно ли исключить любую строку, где первый столбец имеет восклицательный знак в конце строки.т.е. он должен загружать только следующие строки

"fd","sdf","rdsfds","dsfd"
"fd","sdf","tdsfds","dsfd"

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Согласно Загрузка записей на основе условия в справочнике по управляющему файлу SQL * загрузчика (11g):

"Вы можете загрузить или удалить логическую запись, используя предложение WHEN для проверки условия в записи."

Так что вам нужно что-то вроде этого:

LOAD DATA ... INSERT INTO TABLE mytable   WHEN mycol1 NOT LIKE '%!' 
(mycol1..  ,mycol2 ..)

Но оператор LIKE недоступен! У вас есть только = и ! =

Возможно, вы могли бы вместо этого попробовать внешнюю таблицу.

1 голос
/ 23 августа 2010

Я бы прикрепил ограничение на стол и просто позволил бы им быть отклоненным.Может быть, удалить их после загрузки.Или unix "grep -v", чтобы очистить их от файла.

...