Загрузчик данных в PL SQL в сценарии оболочки - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь создать загрузчик данных для загрузки файлов в мою базу данных.

Формат файла следующий:

filename.dat,1234,12345,123456,20190521000001,20251231235959,123456789
filename.dat,1234,12345,123456,20190521000001,20251231235959,123456789
filename.dat,1234,12345,123456,20190521000001,20251231235959,123456789

К полям выше я хочу добавить ID (уникальный первичный ключ) и поле, которое будет подстрокой имени файла (EVENT_FAMILY). Поэтому моя таблица XYZ состоит из следующих полей:

ID
FILENAME
STORE
PROMO_ID
PROMO_COMP_ID
START_DATE
END_DATE
ITEM
EVENT_FAMILY

I сделал следующий код

files="/my/file/location/filename.txt"

nrm_conf="load data
INFILE '$files'
alter session set nls_date_format = 'YYYYMMDDHH24MISS';
INTO TABLE XYZ
APPEND
FIELDS TERMINATED BY ','
(select nvl(max(ID)+1,1) from XYZ,
FILENAME,
STORE,
PROMO_ID,
PROMO_COMP_ID,
to_date('START_DATE,','YYYYMMDDHH24MISS')
to_date('END_DATE','YYYYMMDDHH24MISS'),
ITEM,
SUBSTR( FILENAME, 0,5) terminated by whitespace
 )
"

и выполняется с помощью команды

sqlldr $UP $nrm_conf

, где $UP - соединение с БД

. Возвращает две ошибки:

LRM-00104: 'session' is not a legal integer for 'discardmax'

SQL*Loader-100: Syntax error on command-line

Кто-нибудь может мне помочь?

Заранее спасибо

...