Вставить данные в базу данных с помощью sqlldr в Coldfusion - PullRequest
0 голосов
/ 07 июня 2019

У меня есть файл CSV, который я получил с веб-сайта.Мне нужно загрузить этот же CSV-файл в мою базу данных, используя SQLLDR в ColdFusion.По какой-то причине я не могу вставить данные в базу данных.

Ниже мой код.Используя этот код, я не смог вставить данные в базу данных из файла CSV.Это рабочий файл из пакетного файла, но он не работает с использованием cfexecute.

К вашему сведению, мы используем среду Linux, поэтому путь немного отличается.

<cfset CTLPATH="/home/mosuser/apps/nodal/ctl">
<cfset LOGPATH="/home/mosuser/apps/nodal/logs">

<cfexecute name="/opt/oracle/product/12.1.0/client_1/bin/sqlldr" 
    arguments="userid/password@Sid control=#CTLPATH#/mpimReport.ctl 
    log=#LOGPATH#/#PathfileName#_load.log data=#filelist##PathfileName#.csv 
    bad=#LOGPATH#/#PathfileName#_error.txt">
</cfexecute>

Обновление:

Как было предложено, при выводе переменной ошибки qryerr было показано:

Сообщение 2100 не найдено;Нет файла сообщения для продукта = RDBMS, средство = ULMessage 2100 не найдено;Нет файла сообщения для продукта = RDBMS, средство = UL

1 Ответ

2 голосов
/ 07 июня 2019

Добавьте несколько параметров к вашему вызову <cfexecute>.

  • timeout - в порядке количества секунд, ожидаемых процессом
  • variable - имя переменной для хранения вывода STDOUT sqlldr
  • errorVariable - имя переменной для хранения вывода STDERR sqlldr

После этого вы можете получить выходные данные вызова и проверить его на наличие сообщений об ошибках и другой информации.

Добавление тайм-аута является критически важным шагом - это блокирует cfexecute до тех пор, пока программа не завершится или тайм-аут не будет достигнут. Без тайм-аута ColdFusion просто запускает процесс и немедленно продолжает выполнение оставшейся части текущей страницы.

...