Может кто-нибудь предложить мне, как я могу написать путь для хранения выходного файла, в котором моя хранимая процедура выводит в моей оракула БД? - PullRequest
0 голосов
/ 06 июня 2019

предположим, что IP-адрес моего FTP-сервера xx.xxx.xx.xx, и мне нужно, чтобы выходной файл был сохранен в D: / пример.Мне нужно убедиться, что путь, который я указываю, находится на моем FTP-сервере.Как я могу включить это в мою функцию fopen, как путь, который указывает на пример на моем FTP-сервере.

1 Ответ

0 голосов
/ 06 июня 2019

Вообще говоря, так оно и есть:

  • есть сервер базы данных
  • на одном из его дисков есть каталог
  • этот каталог будет использоваться в команде create directory, которая создает каталог , объект Oracle
  • будет использоваться в качестве цели для ваших операций с файлами. Например:
    • будет содержать файлы CSV, являющиеся источником внешних таблиц
    • .dmp файлы, результаты экспорта данных, будут храниться там (то же самое относится и к импорту)
    • UTL_FILE создаст файлы в этом каталоге

Все это означает, что ваша идея создания файла на FTP-сервере может работать не так просто.

Однако есть способ: если вы создаете каталог (объект Oracle) с использованием UNC (Universal Naming Convention), который указывает на каталог на FTP-сервере, файл может быть создан там. Сделайте некоторое исследование об этом; Я знаю, что когда-то это делал (помещал файлы на сервер приложений), но это было давно, и я не помню всего, что делал.

Другой вариант, который вы можете рассмотреть, это DBMS_SCHEDULER package. Предположим, вы создаете файл на сервере базы данных (это самый простой вариант; если вы все сделаете правильно, это более или менее тривиально). После завершения процедуры (которая создает файл) вызовите DBMS_SCHEDULER.CREATE_JOB, используя тип задания executable, и вызовите пакетный файл операционной системы, который скопирует файл с сервера базы данных на FTP-сервер.

Это все, что я могу сказать об этом; по крайней мере, у вас есть что исследовать и подумать.

...