Количество строк всех таблиц в базе данных в Netezza

Я переношу данные из MS SQL в Netezza, поэтому мне нужно найти количество строк для всех таблиц в базе данных (в Netezza). Любой запрос для того же будет очень полезен для меня, поскольку я совершенно новичок в этом. Заранее спасибо.


person Niranjan Shankar    schedule 16.05.2014    source источник
comment
Некоторые клиентские инструменты SQL могут сделать это за вас. Какой инструмент вы используете?   -  person a_horse_with_no_name    schedule 16.05.2014
comment
Можете ли вы использовать хранимые процедуры, если да, то проблема проста. Просто переберите нужные имена таблиц из таблицы _v_table и получите из нее row_count. При необходимости я могу предоставить вам полный рабочий код с помощью хранимых процедур.   -  person Varun Bajaj    schedule 19.05.2014


Ответы (4)


Этот запрос делает это прямо из _v_table:

SELECT TABLENAME, RELTUPLES FROM _V_TABLE where objtype = 'TABLE' ORDER BY RELTUPLES
person Dustin    schedule 20.06.2014

что-то вроде этого должно работать:

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

скопируйте/вставьте результат, удалите последний «союз всех».

person r.m    schedule 16.05.2014
comment
должен быть objtype вместо object_type - person Dawid Moś; 26.11.2016

Я никогда не использовал Netezza, но погуглил и нашел:

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;
person Lennart    schedule 16.05.2014
comment
Это возвращает только количество строк для одной таблицы, а не для всех таблиц в базе данных. - person a_horse_with_no_name; 16.05.2014
comment
Правильно, вам придется перебирать таблицы, чтобы получить счет для каждой отдельной таблицы. Я не уверен, хочет ли OP сумму подсчетов для всех таблиц или индивидуальный подсчет для всех таблиц. - person Lennart; 16.05.2014

Другой способ получить количество строк для таблицы (если у вас есть доступ к уровню операционной системы) — использовать команду 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.

Выходы: возвращается количество строк таблицы.

Используйте эту команду в сценарии оболочки для циклического просмотра всех таблиц в базе данных. Используйте nz_get_table_names, чтобы получить список таблиц в базе данных.

person BrianB    schedule 27.06.2017