Каково ваше определение «мусор»?
Если вы знаете, что столбец должен содержать только 10 символов данных, например, вы можете добавить NULLIF( LENGTH( <<column>> ) > 10 )
в свой контрольный файл.Если вы знаете, что столбец должен содержать только числовые символы (или буквенно-цифровые символы), вы можете написать пользовательскую функцию очистки данных (например, STRIP_NONNUMERIC) и вызвать ее из своего управляющего файла, например,
COLUMN_NAME position(1:14) CHAR "STRIP_NONNUMERIC(:LAST_NAME)",
В зависимости от ваших требованийэти очищающие функции и очищающая логика могут быть довольно сложными.В хранилищах данных, которые каждую ночь загружают и очищают большие объемы данных, данные обычно перемещаются через серию промежуточных таблиц, поскольку применяются последовательные раунды правил очистки и проверки данных вместо того, чтобы пытаться загрузить и очистить все данные за один шаг.,Обычным подходом может быть, например, загрузка всех данных в столбцы VARCHAR2 (4000) без очистки с помощью SQL * Loader (или внешних таблиц).Тогда у вас был бы отдельный процесс перемещения данных в промежуточную таблицу, которая имеет надлежащие типы данных, NULL-которых невозможно преобразовать (т. Е. Нечисловые данные в столбце NUMBER, невозможные даты и т. Д.).Пришёл бы другой процесс и переместил бы данные в другую промежуточную таблицу, где вы применяете правила домена - такие вещи, как номер социального страхования, должны быть 9 цифрами, широта должна быть между -90 и 90 градусами, или код штата долженбыть в таблице соответствия состояния.В зависимости от сложности проверок у вас может быть больше процессов, которые перемещают данные в дополнительные промежуточные таблицы, чтобы применять все более строгие наборы правил проверки.