Boa tarde a todos
Esse é meu primeiro post aqui:
Não tenho experiência com sql, mas estou precisando muito de um que me retorne um count(*) das tabelas do usuário corrente, mais ou menos assim:
TABELA 01 = 1789
TABELA 02 = 3010
TABELA 03 = 5890
TABELA 04 = 2410
...
Se tiver alguma coisa pronta que me informe isso me falem e desculpem pelo posto desnecessário.
Agradeço a atenção
select count(*) from TABELAS_DO_USUARIO
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bem, não tem nada AUTOMATICO que faz isso...
O mais automático que tem é você consultar a USER_TABLES. Nessa tabela do dicionário, tem um campo chamado NUM_ROWS, que tem a quantidade de linhas da tabela.
Veja:
Observe que a maior tabela aqui tem 79 milhões de linhas!
É claro que essa informação é falsa, pois esse campo NUM_ROWS corresponde ao número de linhas que tinha no dia que foi feito o último ANALYZE da tabela. Ou seja, se você não coleta estatísticas no seu banco periodicamente, talvez tenha informações bem erradas nesse campo.
Vamos provar isso:
Observe que fiz o count agora e minha tabela tem 81 milhões de linhas! (contra 79 mi coletado no dia 26 de Março)
Outra forma de fazer isso, é você criar um script que GERA os sql´s com COUNT. Assim:
Daí, basta executar o script,
O mais automático que tem é você consultar a USER_TABLES. Nessa tabela do dicionário, tem um campo chamado NUM_ROWS, que tem a quantidade de linhas da tabela.
Veja:
SQL> select table_name, num_rows, last_analyzed
2 from user_tables
3 order by num_rows desc nulls last
4 /
TABLE_NAME NUM_ROWS LAST_ANAL
------------------------------ ---------- ---------
TB_EMBARQUE_DEMONSTRATIVO 79894226 26-MAR-06
TB_EMBARQUE 78932637 26-MAR-06
TB_LOG_RECEPCAO_AVERBCOL 29269790 26-MAR-06
TB_LOG_EMBARQUE 18651547 26-MAR-06
É claro que essa informação é falsa, pois esse campo NUM_ROWS corresponde ao número de linhas que tinha no dia que foi feito o último ANALYZE da tabela. Ou seja, se você não coleta estatísticas no seu banco periodicamente, talvez tenha informações bem erradas nesse campo.
Vamos provar isso:
Observe que fiz o count agora e minha tabela tem 81 milhões de linhas! (contra 79 mi coletado no dia 26 de Março)
SQL> select count(*) from TB_EMBARQUE_DEMONSTRATIVO;
COUNT(*)
----------
81159845
SQL>
Outra forma de fazer isso, é você criar um script que GERA os sql´s com COUNT. Assim:
SQL> select 'SELECT COUNT(*) FROM '||table_name||';'
2 from user_tables
3 order by num_rows desc nulls last
4 /
'SELECTCOUNT(*)FROM'||TABLE_NAME||';'
----------------------------------------------------
SELECT COUNT(*) FROM TB_EMBARQUE_DEMONSTRATIVO;
SELECT COUNT(*) FROM TB_EMBARQUE;
SELECT COUNT(*) FROM TB_LOG_RECEPCAO_AVERBCOL;
SELECT COUNT(*) FROM TB_LOG_EMBARQUE;
SELECT COUNT(*) FROM TT_LOG_EXCLUSAO;
SELECT COUNT(*) FROM TT_RECEPCAO_AVERBCOL;
SELECT COUNT(*) FROM TT_RECEPCAO_AVERBCOL_OK;
SELECT COUNT(*) FROM TT_CONCENTRACAO_RISCO;
SELECT COUNT(*) FROM TB_RATEIO_MOVIMENTO;
SELECT COUNT(*) FROM TB_COMISSAO;
SELECT COUNT(*) FROM TB_AUTO_COBERTURA;
SELECT COUNT(*) FROM TB_PARCELA_LOG;
SELECT COUNT(*) FROM TB_RATEIO_MOVIMENTO_CWI;
SELECT COUNT(*) FROM TB_MOVIMENTO_FINANCEIRO;
SELECT COUNT(*) FROM TB_LOG_LIQ_MOVIMENTO;
SELECT COUNT(*) FROM TB_ARQUIVO_EMBARQUE;
SELECT COUNT(*) FROM TB_MOVIMENTO_FINANCEIRO_CWI;
SELECT COUNT(*) FROM TB_RATEIO_GAP;
SELECT COUNT(*) FROM TB_ERRO_AVERBNET;
SELECT COUNT(*) FROM TB_PERC_COMISSAO_LOG;
SELECT COUNT(*) FROM TB_PARCELA_RECIBO;
SELECT COUNT(*) FROM TB_PARCELA_NOTA;
SELECT COUNT(*) FROM TB_RATEIO_MOVIMENTO_FABIO;
SELECT COUNT(*) FROM TB_MOVIMENTO_FINANCEIRO_FABIO;
SELECT COUNT(*) FROM TB_ITEM_PROPOSTA_CONTRATO;
SELECT COUNT(*) FROM TB_REGRA_PROCESSO_SEGURADO;
SELECT COUNT(*) FROM TB_PARCELA;
SELECT COUNT(*) FROM TB_GAP;
SELECT COUNT(*) FROM TB_LOG_LIQ_MOVIMENTO_FABIO;
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Ter, 11 Abr 2006 3:28 pm
- Localização: Curitiba / PR
Muito obrigado dr_gori
Mais uma coisa só...
Como eu poderia fazer para exibir de qual tabela é cada "count".
Eu gerei o script definindo o spool arquivo.txt para os dois casos,
mas o arquivo com os totais foi gerado sem o nome da tabela, assim:
Seria melhor assim:
Como poderia fazer isso ?
Agradeço a atenção
Mais uma coisa só...
Como eu poderia fazer para exibir de qual tabela é cada "count".
Eu gerei o script definindo o spool arquivo.txt para os dois casos,
mas o arquivo com os totais foi gerado sem o nome da tabela, assim:
COUNT(*)
----------
87855
COUNT(*)
----------
6
SELECT COUNT(*) FROM TABELA)!
COUNT(*)
----------
87855
SELECT COUNT(*) FROM TABELA)!
COUNT(*)
----------
6
Agradeço a atenção
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Que mordomia esse forum, hein?
select 'SELECT '''||table_name||': '' TABELA, COUNT(*) FROM '||table_name||';'
from user_tables
order by num_rows desc nulls last
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 23 visitantes