web-dev-qa-db-fra.com

Comment lister toutes les tables utilisateur dans Sybase avec leur nombre de lignes?

Je voudrais retourner toutes les tables et son compte à côté. Quel est le moyen le plus rapide de s'y prendre?

Je sais que dans Oracle, vous pouvez faire quelque chose comme ci-dessous, mais vous n'êtes pas sûr de Sybase:

declare n number;
begin
   for rec in (select object_name from user_objects where object_type='TABLE')
   loop
     execute immediate 'select count(*) from '||rec.object_name into n;
     dbms_output.put_line (rec.object_name||':'||n);
   end loop;
end;
8
Neerav

Voici le sql Sybase qui fait le dessus:

select ob.name,st.rowcnt 
from sysobjects ob, systabstats st 
where ob.type="U"  
and st.id=ob.id 
order by ob.name
20
Neerav

Cela dépend de quel produit Sybase vous voulez dire. Dans SQL Anywhere (9 et 11), votre solution ne fonctionne pas, mais cela fonctionne:

select table_name, count
from systable
where primary_root<>0 and creator=1
order by 1
9
maf-soft

Si l'utilisateur actuel est le créateur:

SELECT table_name, count
  FROM sys.systable
 WHERE creator = user_id()

REMARQUE: je teste ceci dans Sybase ASA 9.

3
Paul Vargas

Comme il peut y avoir plusieurs entrées dans la table systabstats, la requête doit être:

select ob.name, sum(st.rowcnt)
from sysobjects ob, systabstats st 
where ob.type="U"  
and st.id=ob.id 
group by ob.name
order by ob.name
2
Rajkaran Mishra

utiliser la requête ci-dessous

select name,row_count(db_id(),id) as "Rows"
from sysobjects where type='U' order by 2 desc
0
Sathesh

sélectionnez ob.name, st.rowcnt à partir de sysobjects ob, systabstats st où b.type = 'U' et st.id = ob.id et indid = 0 ordonné par ob.name

0
Srinath408

Cela fonctionne pour moi avec "SQL Central" avec SQL Anywhere 17:

SELECT table_name, st.count
FROM systable st 
WHERE table_type = 'BASE'
0
user8128167