Файл управления загрузчиком Oracle SQL для игнорирования многоточия

У меня есть управляющий файл Oracle SQL Loader на основе позиции в текстовом файле. Одно конкретное поле периодически получает многоточие '...' из источника, что вызывает возврат каретки в таблице загрузки. Независимо от того, сколько раз я прошу '...' НЕ использовать эти пользователи, рано или поздно найдется кто-то, кто забудет, или из-за текучести кадров и т. д. Вот текущая строка контрольного файла для этого поля:

TRAN_DESC   POSITION(153 : 202)  Char,

Есть ли какая-либо команда, которую можно добавить в эту строку, чтобы игнорировать специальные символы, такие как многоточие?


person jc_dollar    schedule 05.04.2021    source источник
comment
Как многоточие переводится как возврат каретки? Какие наборы символов задействованы? И это настоящий символ многоточия или три точки?   -  person Alex Poole    schedule 05.04.2021


Ответы (1)


Я бы подумал о REPLACE. Вот пример.

Пример таблицы:

SQL> create table test (id number, tran_desc varchar2(10));

Table created.

Файл управления:

load data
infile *
into table test
(id        position(1:2), 
 tran_desc position(3:12) char "replace(:tran_desc, '...', '')"
)

begindata
10LittleFoot
11Big...foot

Загрузка сеанса и результат:

SQL> $sqlldr scott/tiger control=test2.ctl log=test2.log

SQL*Loader: Release 11.2.0.2.0 - Production on Pon Tra 5 17:03:39 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2

SQL> select * from test;

        ID TRAN_DESC
---------- ----------
        10 LittleFoot
        11 Bigfoot

SQL>
person Littlefoot    schedule 05.04.2021