Netezza中数据库中所有表的行计数

时间:2014-05-16 06:08:50

标签: sql netezza

我正在将数据从MS SQL迁移到 Netezza ,因此我需要找到数据库中所有表的行数(在Netezza中)。任何查询对我来说都是一个巨大的帮助,因为我对此完全陌生。提前谢谢。

4 个答案:

答案 0 :(得分:5)

此查询直接从_v_table执行:

SELECT TABLENAME, RELTUPLES FROM _V_TABLE where objtype = 'TABLE' ORDER BY RELTUPLES

答案 1 :(得分:2)

这样的事情应该有效:

select 'select '||chr(39)||tablename||chr(39)||' as entity, count(1) from '||tablename||' union all' 
from _v_table 
where object_type ='TABLE';

复制/粘贴结果,删除最后一个“union all”。

答案 2 :(得分:0)

我从未使用过Netezza,但用google搜索并发现:

http://www.folkstalk.com/2009/12/netezza-count-analytic-functions.html

SELECT dept_id,
       salary,
       COUNT(1) OVER() total_cnt
FROM Employees

如果你不知道存在哪些表:

http://www.folkstalk.com/2009/11/netezza-system-catalog-views.html

select * from _v_table;

答案 3 :(得分:0)

获取表的行计数(如果您有权访问操作系统级别)的另一种方法是使用Netezza nz_get_table_rowcount命令。您可以输入" nz_get_table_rowcount -h"获取此命令的所有帮助文本,但格式为:

用法:nz_get_table_rowcount [数据库]

目的:执行" SELECT COUNT(*)FROM;"获得真正的行数。           因此,此脚本会导致执行全表扫描。

输入:数据库名称是可选的。如果未指定,则为$ NZ_DATABASE           将改为使用。

      The table name is required.  If only one argument is specified, it 
      will be taken as the table name.

      If two arguments are specified, the first will be taken as the 
      database name and the second will be taken as the table name.

输出:返回表rowcount。

在shell脚本中使用此命令循环遍历数据库中的所有表。使用nz_get_table_names获取数据库中的表列表。