Oracle 12c - SQL * Loader условная загрузка
Я пытаюсь использовать SQL Loader и при вставке данных в таблицы мне нужно проверить некоторые условия и вставить данные.
Пример:
CASE COLUMNA
WHEN 'NULL'
-- INSERT NULL VALUE IN IT INSTEAD OF STRING 'NULL'
ELSE
-- INSERT THE DATA AS IS
END
Можем ли мы использовать эти операторы case в управляющем файле SQL Loader? Не могу найти хороших примеров для этого нигде.
2 ответа
Решение
Попробуйте добавить кодировку в свой контрольный файл, например:
load data
APPEND INTO TABLE XXX
fields terminated by "\t"
TRAILING NULLCOLS
( --Condition which you can add.
START_DATE "CASE WHEN length(:START_DATE ) < 10 THEN null ELSE :START_DATE END"
)
где START_DATE
столбец таблицы
К вашему сведению, что для более сложных тестов или других нужд, которые вы можете использовать повторно, вы также можете вызывать функции или элементы пакета, которые возвращают значение:
...
START_DATE "UTILITY_PKG.VALIDATE_DATE(:START_DATE)"
Или запросы (должны быть заключены в perentheses):
START_DATE "(select sysdate from dual)",