Укажите относительный путь как infile для .ctl - PullRequest
0 голосов
/ 22 мая 2018

Я не могу найти способ указать относительный путь для моего infile при использовании sql loader.

Я запускаю его через командную строку, и это выглядит так:

C:\app\...in\sqlldr.exe userid=user/pass 
control="C:\User...DATA_DATA_TABLE.ctl" log="C:\User...DATA_DATA_TABLE.log"
 bad = "C:\User...DATA_DATA_TABLE.bad" discard = "C:\User...DATA_DATA_TABLE.dsc"

(я добавил возврат каретки только для удобочитаемости, здесь я использую командуэто одна строка)

И это работает, он начнет вставлять вещи в таблицу, ЕСЛИ путь к моему infile в .ctl абсолютно такой же, как "C: \ Usertemp \ example.ldr"

Мой ctl был сгенерирован автоматически sqldeveloper.И я просто изменил путь к этому:

OPTIONS (ERRORS=50)
LOAD DATA 
INFILE 'AI_SLA_DATA_DATA_TABLE.ldr' "str '{EOL}'" <-- i'm trying to get relative path here but doesn't work
APPEND
CONTINUEIF NEXT(1:1) = '#'
INTO TABLE "USER"."DATA"
...other sqldeveloper generated stuff

Файл .ldr находится в том же каталоге, что и файл .ctl.Возможно ли получить путь CTL?Я почти уверен, что он ищет файл .ldr рядом с sqlldr.exe вместо ctl.

Какие-нибудь советы для этого?Я не могу найти ответы на docs.oracle.

Спасибо.

1 Ответ

0 голосов
/ 22 мая 2018

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

C:\app\...in\sqlldr.exe userid=user/pass 
control="DATA_DATA_TABLE.ctl" log="DATA_DATA_TABLE.log"
 bad = "DATA_DATA_TABLE.bad" discard ="DATA_DATA_TABLE.dsc"
data="AI_SLA_DATA_DATA_TABLE.ldr"
...