Как вы запрашиваете имена таблиц и количество строк для всех таблиц в схеме, используя HP NonStop SQL / MX? - PullRequest
0 голосов
/ 06 июля 2018

Как запрашивать имена таблиц и количество строк для всех таблиц в схеме с помощью HP NonStop SQL / MX?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Ниже приведен список таблиц в схеме sql / mx. Обратите внимание, что приведенное здесь имя системного каталога является примером, замените NONSTOP_SQLMX_SYSNAME на NONSTOP_SQLMX_xxxx, где xxxx - это имя узла Expand вашей системы.

Также имя схемы определения включает номер версии схемы, в этом примере используется 3600. В этом примере перечислены все имена базовых таблиц в схеме JDFCAT.T.

Информацию о таблицах метаданных см. В главе 10 справочного руководства по SQL / MX.

Количество строк таблицы не хранится в системных метаданных, поэтому вы не можете получить их оттуда. Для таблицы выберите SELECT ROW COUNT FROM TABLE;

SELECT
    O.OBJECT_NAME 
FROM 
    NONSTOP_SQLMX_SYSNAME.SYSTEM_SCHEMA.CATSYS C
    INNER JOIN NONSTOP_SQLMX_SYSNAME.SYSTEM_SCHEMA.SCHEMATA S
        ON (S.CAT_UID = C.CAT_UID)
    INNER JOIN JDFCAT.DEFINITION_SCHEMA_VERSION_3600.OBJECTS O
        on S.SCHEMA_UID = o.SCHEMA_UID
    WHERE C.CAT_NAME = 'JDFCAT' AND
          S.SCHEMA_NAME = 'T' AND
          O.OBJECT_TYPE = 'BT'
    READ UNCOMMITTED ACCESS;     
0 голосов
/ 06 июля 2018

Это может помочь вам, хотя это более стандартный SQL, и я не уверен, сколько вариаций входит в sqlmx

SELECT 
    TableName = t.NAME,
    TableSchema = s.Name,
    RowCounts = p.rows
FROM 
    sys.tables t
INNER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE 
    t.is_ms_shipped = 0
GROUP BY
    t.NAME, s.Name, p.Rows
ORDER BY 
    s.Name, t.Name

Очевидно, что это пример, замените пример данных и таблицы на ваши

...