Экспорт результатов SQL-запроса в виде XML в сценарий DB2 - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь запросить много информации о системе / базе данных в сценарии SQL для запуска в DB2 Linux / Unix / Windows. В идеале выходные данные должны быть машиночитаемыми и, по крайней мере, несколько понятными для людей.

Поскольку форматирование вывода в DB2 CLP кажется ошибочным (или я слишком новичок), я попытался вывести материал в виде XML и обработать его позже, что-то вроде:

VALUES ('<?xml version="1.0"?>');
SELECT REC2XML(1.0, 'COLATTVAL', 'row', NAME, VALUE, DEFERRED_VALUE) FROM SYSIBMADM.DBMCFG ORDER BY NAME;

Это работает нормально; Я получаю вывод, который, возможно, смогу обработать дальше.

Однако, когда я пытаюсь запустить REC2XML с такой функцией, как current_timestamp:

SELECT Current_timestamp FROM sysibm.sysdummy1;

Я не могу использовать REC2XML, поскольку кажется, что он поддерживает только выбор столбцов.

Не слишком много знаний по DB2:

  1. Есть ли лучший / более простой способ создания выходных данных XML из сценария SQL
  2. Есть ли способ также выводить результаты функций, таких как current_timestamp, в виде XML?

Обратите внимание, что я за сценарием SQL (а не сценарием оболочки); если возможно, я бы хотел использовать его на компьютерах с Windows, Linux и Unix ...

Ответы [ 2 ]

1 голос
/ 27 октября 2011
  1. Я не знаю лучшего способа.
  2. Вы можете получить XML-вывод таких функций:

    Select REC2XML(1.0, 'COLATTVAL', 'row', ct) From (SELECT current timestamp as ct FROM sysibm.sysdummy1);
    
0 голосов
/ 21 декабря 2016

Эта функция не существует в DB2 для zOS.Альтернативой является использование XMLFOREST для генерации набора столбцов и XMLAGG для объединения строк.

SELECT
xmlserialize(
    xmlelement(
        name "employees",
        xmlagg(
            xmlelement(
                name "employee",
                xmlforest(
                    EMPNO as "empno",
                    SURNAME as "surname",
                    MIDNAME as "midname",
                    FIRSTNAME as "firstname",
                    HIREDATE as "hiredate"
                )
            )   
            order by EMPNO
        )
    AS CLOB VERSION '1.0' INCLUDING XMLDECLARATION
    )
)
from EMPLOYEES

Образец:

<?xml version="1.0" encoding="UTF-8"?><employees><employee><empno>12345</empno> ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...