Oracle - автоматизировать экспорт / выгрузку данных - PullRequest
2 голосов
/ 30 июня 2011

Oracle SQL Developer имеет возможность экспортировать содержимое результата запроса в различные форматы (CSV / фиксированная ширина / Excel / XML). Есть ли способ автоматизировать это?

Если нет, какие бесплатные инструменты позволят мне автоматизировать экспорт в те же форматы, в которые SQL Developer способен экспортировать?

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

SQL Workbench имеет довольно мощную командную строку export инструмент, не зависящий от базы данных

2 голосов
/ 30 июня 2011

Я не знаю, как можно автоматизировать экспорт 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, как и в случае с другими параметрами, вы можете автоматизировать вызов этой процедуры с помощью вашего любимого планировщика.

...