Как использовать подстроку в условии когда - PullRequest
1 голос
/ 03 ноября 2019

Мы пытаемся использовать условие подстроки в предложении when, используя sql loader, но кажется, что допускаются только фиксированные значения

LOAD DATA
INFILE 'TO_IMPORT.csv'
APPEND INTO TABLE AUDIOCODE_TRACK_01
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)='4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
SBC_SESSION,
CALL_DIRECTION,
SOURCE_IP,
DESTINATION_IP,
SOURCE_PARTY,
DESTINATION_PARTY,
DURATION,
CALL_START,
CALL_END,
IPGROUP,
INTERFACE_SIP,
PROXY_SIP,
TRANSFERRED
)

, это генерирует эту ошибку:

SQL*Loader-350: Syntax error at line 4.
Expecting quoted string or hex identifier, found "substr".
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)=

1 Ответ

0 голосов
/ 07 ноября 2019

В соответствии с документацией нет субстрата, еще хуже, это зарезервированное слово

https://docs.oracle.com/database/121/SUTIL/GUID-4E710755-36CA-4F2D-AFFF-E8A707FF3EBB.htm#SUTIL1448

Если вы можете попросить поставщика данных изменить порядок полей и поместить DURATION в начало,Затем вы можете использовать range_start: range_end синтаксис

LOAD WHEN (1:1) = '4' 

В противном случае вам придется фильтровать потом. Но это может привести к другим проблемам, когда у вас другой формат в зависимости от первой цифры длительности. Третьим решением будет препроцессор, который фильтрует / изменяет данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...