AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 40441
Accepted
Vishnu Kumar
Vishnu Kumar
Asked: 2013-04-20 02:59:11 +0800 CST2013-04-20 02:59:11 +0800 CST 2013-04-20 02:59:11 +0800 CST

Obter todos os nomes de partição para uma tabela

  • 772

Eu quero listar todas as partições criadas por triggers dinâmicos no PostgreSQL 9.1.
Consegui gerar uma contagem de partições usando esta resposta relacionada de Frank Heikens .

Eu tenho uma tabela foocom um gatilho de inserção que cria foo_1, foo_2etc. dinamicamente. A partição para inserção é escolhida com base no id da chave primária, um particionamento baseado em intervalo.

É possível exibir todas as partições atualmente em vigor para a tabela foo?

postgresql partitioning
  • 2 2 respostas
  • 56132 Views

2 respostas

  • Voted
  1. Best Answer
    dezso
    2013-04-23T06:45:28+08:002013-04-23T06:45:28+08:00

    Use a primeira consulta da resposta que você vinculou e adicione uma WHEREcláusula simples para obter as partições de uma única tabela:

    SELECT
        nmsp_parent.nspname AS parent_schema,
        parent.relname      AS parent,
        nmsp_child.nspname  AS child_schema,
        child.relname       AS child
    FROM pg_inherits
        JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid
        JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
        JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace
        JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace
    WHERE parent.relname='parent_table_name';
    
    • 35
  2. Erwin Brandstetter
    2014-04-26T08:24:33+08:002014-04-26T08:24:33+08:00

    Use o tipo de identificador de objeto regclasspara uma consulta muito simples:

    SELECT inhrelid::regclass AS child -- optionally cast to text
    FROM   pg_catalog.pg_inherits
    WHERE  inhparent = 'my_schema.foo'::regclass;
    

    Lista todas as tabelas filhas de uma determinada tabela pai parent_schema.foo. A qualificação do esquema é opcional, a search_pathvisibilidade decide se estiver ausente.

    Da mesma forma, os nomes de tabela retornados são qualificados pelo esquema e escapam automaticamente quando necessário. Seguro, rápido e simples.

    A solução também funciona para particionamento declarativo no Postgres 10 ou posterior porque, citando o manual:

    As partições individuais são vinculadas à tabela particionada com herança nos bastidores;

    Além disso, para exibir a tabela de origem para qualquer linha recuperada de qualquer tabela:

    SELECT tableoid::regclass AS source, *
    FROM   my_schema.foo
    WHERE  <some_condition>;
    • 19

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve