126 votes

Comment trouver une table avec une colonne spécifique dans postgresql ?

J'utilise PostgreSQL 9.1. J'ai le nom de la colonne d'une table. Est-il possible de trouver la ou les tables qui ont cette colonne ? Si oui, comment ?

182voto

Ravi Shekhar Points 1479

Vous pouvez également faire

 select table_name from information_schema.columns where column_name = 'your_column_name'

78voto

Roman Pekar Points 31863

Vous pouvez interroger catalogues de systèmes :

select c.relname
from pg_class as c
    inner join pg_attribute as a on a.attrelid = c.oid
where a.attname = <column name> and c.relkind = 'r'

sql fiddle demo

9voto

jutky Points 1464

J'ai utilisé la requête de @Roman Pekar comme base et ajouté le nom du schéma (pertinent dans mon cas)

select n.nspname as schema ,c.relname
    from pg_class as c
    inner join pg_attribute as a on a.attrelid = c.oid
    inner join pg_namespace as n on c.relnamespace = n.oid
where a.attname = 'id_number' and c.relkind = 'r'

sql fiddle demo

3voto

Dmitry Belyaev Points 356

Tout simplement :

$ psql mydatabase -c '\d *' | grep -B10 'mycolname'

Agrandir le décalage -B pour obtenir le nom de la table, si nécessaire

2voto

jjj Points 426

Support Wildcard Trouvez le schéma de table et le nom de la table qui contient la chaîne de caractères que vous voulez trouver.

select t.table_schema,
       t.table_name
from information_schema.tables t
inner join information_schema.columns c on c.table_name = t.table_name
                                and c.table_schema = t.table_schema
where c.column_name like '%STRING%'
      and t.table_schema not in ('information_schema', 'pg_catalog')
      and t.table_type = 'BASE TABLE'
order by t.table_schema;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X