Необходимо автоматически еженедельно загружать данные Excel в таблицу базы данных

#oracle #plsql

Вопрос:

 create table LOADER_TAB (  i_id,  i_name,  risk );  

csv-файл :

 portal,, ex portal,, ,, i_id,i_name,risk 1,a,aa 2,b,bb 3,c,cc 4,d,dd 5,e,ee 6,f,ff 7,g,gg 8,h,hh 9,i,ii 10,j,jj  

Мне нужно еженедельно загружать данные Excel в таблицу базы данных. В настоящее время я каждый раз использую загрузчик SQL. Но есть ли другой способ автоматизировать это? Мне нужно загружать данные каждый понедельник в таблицу. Мне интересно, можно ли это сделать с помощью dbms_scheduler? Как я смогу автоматически загружать данные в таблицу при еженедельной загрузке excel в папку ?

Ответ №1:

Если вы хотите продолжать использовать SQL*Loader, то вы, вероятно, не стали бы использовать DBMS_SCHEDULER (хотя он способен запускать сценарии уровня операционной системы) — вы бы использовали приложение планирования операционной системы (например, планировщик задач в MS Windows).

Поэтому (если в Windows):

  • Создайте пакетный скрипт ( .bat ), который будет …
  • … запустите sqlldr.exe который …
  • … использует ваш текущий файл управления и загружает данные в таблицу.
  • Используя планировщик задач, запланируйте запуск .bat сценария по понедельникам в нужное время

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

1. Спасибо. На самом деле, я не знаю об этом процессе, как я создам .bat, запустите sqlldr.exe . Любая ссылка помогла бы мне сделать это.

2. Самый простой способ-поместить точно такую же строку SQLLDR (которую вы теперь используете для загрузки данных) в пакетный файл.

3. В настоящее время я выполняю эту задачу в DEV env, но как это будет работать в производстве?

4. Как ты думаешь, почему это имеет значение? Это будет работать так же (или, возможно, даже лучше, поскольку производственные системы обычно более производительны).

5. Если вы планируете выполнение задания на своем компьютере (своем собственном ПК), то ваш компьютер должен иметь доступ к общей папке. Сервер базы данных (который, я полагаю, не является вашим ПК) в этом случае не имеет значения, ему не обязательно иметь доступ к общей папке. SQLLDR должен подключаться к производственному пользователю (это правильно).