SQLLoader без ControlFile

#oracle #sql-loader

#Oracle #sql-загрузчик

Вопрос:

Могу ли я каким-либо образом запустить SQLLoader и ввести в командную строку все параметры, которые я обычно записываю в управляющем файле? Причина, по которой я спрашиваю, заключается в том, что мне нужно загружать разные файлы .csv в разные таблицы в разное время, и было бы намного проще, если бы мне не приходилось каждый раз создавать файл управления. Спасибо!

Ответ №1:

Вам необходимо указать имя управляющего файла для запуска загрузчика SQL. Чтобы загрузить данные для нескольких CSV-файлов, вы можете создать несколько управляющих файлов, по одному для каждого csv-файла, и запускать их по мере необходимости.

Ответ №2:

При использовании *nix вы можете избежать создания реального файла, используя именованный канал, но убедитесь, что вы либо перенаправляете log/bad в /dev/null, либо указываете их местоположение явно, чтобы утилита не зависала при попытке записи в /dev/fd на .bad или .регистрируйте автоматически сгенерированное имя файла, которое не существует.

 sqlldr <args> bad=/path/to/writeable/bad.log log=/path/to/writeable/log.log control=<(echo "load data infile .......")
 

Просто убедитесь, что вы экранируете внутри своего оператора echo, чтобы его вывод точно отражал то, что было бы внутри управляющего файла, если бы это был реальный файл.