Используйте параметры с CTL - PullRequest
       78

Используйте параметры с CTL

0 голосов
/ 29 декабря 2010

Я использую файл CTL для загрузки данных, хранящихся в файле, в конкретную таблицу в моей базе данных Oracle.В настоящее время я запускаю файл загрузчика, используя следующую командную строку:

sqlldr user/pwd@db data=my_data_file control=my_loader.ctl

Я хотел бы знать, возможно ли использовать заданные параметры для извлечения из файла CTL.

ТакжеМожно ли получить имя файла данных, используемого CTL для заполнения таблицы? Я также хотел бы вставить его для каждой строки.В настоящее время мне нужно вызвать процедуру для обновления ранее вставленных записей.

Любая помощь будет признательна!

1 Ответ

0 голосов
/ 29 декабря 2010

Как я знаю, нет никакого способа передать параметр в качестве переменной в Ctrl.
Но Вы можете использовать константу в ctl и изменять файл clt, чтобы изменять это постоянное значение (в содержимом файла ctl) для каждого времени загрузки.

Редактировать: более конкретно.

my_loader.ctl:

--options
load data
infile 'c:\$datfilename$' --this is optional, you can specify here or from command line

into table mytable
fields....
(
datafilename constant '$datfilename$', -- will be replace by real datafname each load
datacol1  char(1),
....
)

dataload.bat: предположим, что $ datfilename $ - это текст, который будет заменен на имя файла данных.

::sample copy
copy my_loader.ctl my_loader_temp.ctl

::replace the name of datafile (mainly the content to load into table's data column)
findandreplace my_loader_temp.ctl "$datafilename$" "%1"

::load
sqlldr user/pwd@db data=%1 control=my_loader_temp.ctl
::or with data be obmitted if you specified by infile in control file.
sqlldr user/pwd@db control=my_loader_temp.ctl

используя: dataload.bat mydatafile_2010_10_10.txt

...