файл управления sqlldr заполняется переменной

#database #oracle #sql-loader

Вопрос:

 infile ‘c:sandeep.txt’
truncate
into table emp
fields TERMINATED BY “|”
trailing nullcols(
column_name constant “${variable}”,
)
 

sqlldr запускается сценарием оболочки, есть ли какой-либо метод, передающий переменную в sqlldr и заставляющий поля использовать то, что я передал ему ?

Комментарии:

1. добавьте некоторую информацию: имя столбца , для которого нужна переменная, это поле не содержится в файле данных, переменная генерируется по имени файла данных.thks

2. Я не думаю, что в управляющем файле можно использовать переменные среды операционной системы; не в последнюю очередь потому, что он должен поддерживать множество версий. Вы можете сгенерировать файл управления из шаблона, подставив в него свое значение, как часть сценария. Хотя я не уверен, что лучший способ сделать это в Windows.

Ответ №1:

Как насчет этого:

 #!/bin/sh
#-- setup
col_name=MY_COL_NAME
#-- create the control file.  Have to escape the double-quotes
rm myloader.ctl      2>/dev/null
echo infile ‘c:sandeep.txt’                >> myloader.ctl
echo truncate                              >> myloader.ctl
echo into table emp                        >> myloader.ctl
echo fields TERMINATED BY "|"            >> myloader.ctl
echo "trailing nullcols("                  >> myloader.ctl
echo column_name constant "${col_name}", >> myloader.ctl
echo ")"                                   >> myloader.ctl
#
#-- check the results
cat myloader.ctl
#-- run sqlldr
sqlldr control=myloader.ctl