如何使用 HP NonStop SQL/MX 查询架构中所有表的表名和行数?
谢谢!
下面是如何在 sql/mx 模式中列出表,注意这里给出的系统目录名称是一个示例,将 NONSTOP_SQLMX_SYSNAME 替换为 NONSTOP_SQLMX_xxxx,其中 xxxx 是系统的展开节点名称。
此外,定义模式名称包括模式版本号,此示例使用 3600。此示例列出了模式 JDFCAT.T 中的所有基表名称。
有关元数据表的信息,请参阅 SQL/MX 参考手册的第 10 章。
表行计数不存储在系统元数据中,因此您无法从那里获取它们。对于表执行 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;
这可能会对您有所帮助,尽管这是更标准的 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
显然这是一个例子,用你的替换示例数据和表格信息