Поле "trim (: field)" отлично работает в большинстве случаев, но я придумал типичный случай, когда размер столбца был char (1), но данные в файле управления были 'Y' и "trim (: field)" не удалось загрузить данные. После многих исследований я узнал, что функция trim() обрезает пробелы из данных, но в то же время добавляет нуль к данным вместо белых пространств, поэтому длина данных в приведенном выше примере будет равна 2, поскольку она считает нулевым значения в левой части данных. Таким образом, данные будут чем-то вроде nullY, так как размер столбца в таблице меньше, чем фактический размер, который он не загрузил, и сообщение об ошибке oracle выдает сообщение об ошибке. Чтобы преодолеть эту проблему, я использовал: «подрезать (нуль из обшивки (: поле))»
Выше сценарий первого обрежет пробела, а затем снова подрезать нуль добавляется в SQL-загрузчике.
Надеюсь, что информация, которую я предоставил, будет полезной для всех, кто сталкивается с проблемой, как я. Я не мог удержаться, чтобы опубликовать это, поскольку я не нашел нить, отвечающего на эту проблему.
Фактически, по умолчанию, без опциональных 'PRESERVE BLANKS', начальное и конечное пробелы будут игнорироваться. Мой вопрос возник из-за того, что я использовал инструмент поверх sqlldr, который генерирует файл ctl, который по умолчанию добавляет 'PRESERVE BLANKS'. –
Как оказалось, ведущие и завершающие пробелы присваиваются по умолчанию, но только для определенных типов данных. Однако некоторые типы, такие как VARCHAR, оставят неиспользуемые пространства. См. Ссылку ниже http://www.csee.umbc.edu/portal/help/oracle8/server.815/a67792/ch05.htm#5817 –