Как вы запрашиваете имена таблиц и количество строк для всех таблиц в схеме, используя HP NonStop SQL/MX?
Как вы запрашиваете имена таблиц и количество строк для всех таблиц в схеме, используя HP NonStop SQL/MX?
Спасибо!
2 ответа
Это может помочь вам, хотя это более стандартный 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
Очевидно, что это пример, замените пример данных и информации таблицы вашими
Ниже показано, как составить список таблиц в схеме 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;