Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Как получить количество строк всех таблиц БД DB2 9.7  [new]
Обходчик
Member

Откуда: Из земли Русской
Сообщений: 13
Коллеги, добрый день

Прошу помощи в написании запроса. Необходимо по отдельной БД получить кол-во строк всех пользовательских таблиц в ней.
Сразу оговорюсь, что с db2 практически незнаком, данный запрос нужен для короткого теста. Заранее спасибо
---
"Мое дело обход" Ю. Поляков "Козленок в молоке"
3 окт 12, 10:24    [13259829]     Ответить | Цитировать Сообщить модератору
 Re: Как получить количество строк всех таблиц БД DB2 9.7  [new]
Евгений Хабаров
Member

Откуда: Москва
Сообщений: 773
Обходчик,

Например так (выполнять из командной строки db2cmd.exe):
Первая команда создаст файл с запросом по всем таблицам. Если нужно некое подмножество таблиц, можно добавить нужное условие.
В этом файле в последней строке нужно заменить "union all" на "WITH UR FOR READ ONLY;"
Вторая команда выполняет созданный запрос.
Перед выполнением файлов быть не должно, т.к. опция -r дописывает в файл.
db2 -x -r c:\select_tables.txt select 'select ''"'||STRIP(CREATOR)||'"."'||STRIP(NAME)||'"'' as NAME, COUNT(1) as NUMREC from "'||STRIP(CREATOR)||'"."'||STRIP(NAME)||'" union all' as TEXT FROM SYSIBM.SYSTABLES
db2 -x -td; -f c:\select_tables.txt -r c:\select_tables_count.txt
3 окт 12, 12:40    [13260993]     Ответить | Цитировать Сообщить модератору
 Re: Как получить количество строк всех таблиц БД DB2 9.7  [new]
Обходчик
Member

Откуда: Из земли Русской
Сообщений: 13
Евгений Хабаров,
Спасибо. Сейчас попробую
3 окт 12, 13:08    [13261237]     Ответить | Цитировать Сообщить модератору
 Re: Как получить количество строк всех таблиц БД DB2 9.7  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Обходчик,

Здравствуйте.

Помещаете в файл запрос:
+ row_count.sql
with a (name, rn_) as (
select '"'||tabschema||'"."'||tabname||'"', rownumber() over()
from syscat.tables
where type in ('T', 'S')
-- фильтр на таблицы, если надо:
and tabschema not like 'SYS%'
fetch first 10 rows only
)
, b (ord, str) as (
select 1
,   case when rn_=1 then 'select sum(cnt) from (' else ' union all' end
  ||' select count(1) cnt from '||name as str
from a
  union all
values (2, ') t(cnt) with ur;')
)
select str
from b
order by ord;
Из командной строки (db2cw, если windows) из каталога с этим файлом:

db2 connect to my_database
db2 -xtf row_count.sql -r row_count.txt | db2 +p -t

Для интереса оно вам в row_count.txt длинный запрос сохранит, которым оно будет вам сумму строк считать.
3 окт 12, 13:38    [13261498]     Ответить | Цитировать Сообщить модератору
 Re: Как получить количество строк всех таблиц БД DB2 9.7  [new]
местный
Guest
Mark Barinstein,статистику собрать реоргчеком, да прошерстить системную таблицу systables (вродебы)- чем не вариант ?
18 окт 12, 22:53    [13343628]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить