Я не знаю, как можно автоматизировать экспорт SQL Developer, нет.
Однако достаточно просто генерировать файлы CSV и / или фиксированной ширины из PL / SQL (используя пакет UTL_FILE
).У Тома Кайта есть пример программ, которые генерируют файлы CSV или фиксированной ширины с использованием PL / SQL или Pro * C.Любой из них может быть относительно легко автоматизирован с помощью вашего любимого планировщика.
Вывод XML может быть автоматизирован почти таким же образом, в зависимости от того, насколько вам нужен контроль над фактически генерируемым XML.Если вам нужен только действительный XML и вас не интересует формат этого XML, вы можете сделать что-то подобное, используя пакет DBMS_XMLGEN (этот пример взят из документации).
DECLARE
qryCtx DBMS_XMLGEN.ctxHandle;
result CLOB;
BEGIN
qryCtx := DBMS_XMLGEN.newContext('SELECT * FROM hr.employees');
-- Set the row header to be EMPLOYEE
DBMS_XMLGEN.setRowTag(qryCtx, 'EMPLOYEE');
-- Get the result
result := DBMS_XMLGEN.getXML(qryCtx);
INSERT INTO temp_clob_tab VALUES(result);
--Close context
DBMS_XMLGEN.closeContext(qryCtx);
END;
/
Затем вы можете записать result
CLOB в файл, используя UTL_FILE
, и снова использовать свой любимый планировщик, чтобы запланировать его.
Если вам просто нужно сгенерировать файл, который Excel может открыть,вам, вероятно, просто нужно создать CSV или файл с разделителями табуляции.Excel может относительно легко открыть файл любого типа, хотя вы получаете дополнительный шаг, когда вам предлагается принять найденный разделитель (обычно он правильно определяет разделитель).
Создание собственного вывода Excel немного сложнее,Существуют API-интерфейсы PL / SQL для создания файлов Excel, такие как ExcelDoctypeUtils Джейсона Беннетта .Но я всегда использовал хранимую процедуру Java, которая использовала либо JExcelAPI , либо Apache POI для генерации файла Excel.Это, очевидно, требует немного больше работы для реализации.Если у вас есть хранимая процедура, которая может записать файл Excel, как и в случае с другими параметрами, вы можете автоматизировать вызов этой процедуры с помощью вашего любимого планировщика.