Re: Adquiriendo informacion del schema de una tabla/vista con libpq

From: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
To: Eduardo Morras <emorrasg(at)yahoo(dot)es>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Adquiriendo informacion del schema de una tabla/vista con libpq
Date: 2015-05-01 22:41:48
Message-ID: CAJKUy5jr3fPdZ4izvzrOMdU4M6EwX=Hny-hJ0Tc+MudUVoeqow@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2015-05-01 10:28 GMT-05:00 Eduardo Morras <emorrasg(at)yahoo(dot)es>:
>
> Muy buenas,
>
> Estoy desarrollando una extension en C para una aplicacion y necesito obtener el schema de una tabla o vista. El nombre de la tabla/vista lo conozco solo en tiempo de ejecucion, ademas tampoco se si es una tabla o una vista.
>
> Actualmente uso una consulta similar a esta:
>
> SELECT DISTINCT
> a.attnum as num,
> a.attname as name,
> format_type(a.atttypid, a.atttypmod) as typ,
> FROM pg_attribute a
> JOIN pg_class pgc ON pgc.oid = a.attrelid
> WHERE a.attnum > 0 AND pgc.oid = a.attrelid
> AND pg_table_is_visible(pgc.oid)
> AND NOT a.attisdropped
> AND pgc.relname = 'TABLA1'
> ORDER BY a.attnum;
>
> pero solo sirve si es una tabla, ademas tengo que hacer la consulta y parsear los resultados.
>

Y si usas las vistas information_schema.tables e information_schema.columns?

En el primero puedes ver la columna table_type para saber si 'BASE
TABLE' o 'VIEW', en la segunda puedes ver nombre, posición y tipo de
dato de cada columna sea tabla o vista.

> ¿Hay alguna forma de hacerlo usando libpq de forma directa llamando a una funcion? Algo como PG_get_table_info(char * nombretabla, int *num_col, char **nombre_columna, int *tipo_columna) o que devuelva un *struct con dicha informacion?
>
> No he encontrado nada en la documentacion del capitulo 31, aparte de consultar directamente a las tablas del sistema.
>

No he encontrado como hacerlo con una función de libpq

--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Eduardo Morras 2015-05-02 09:40:10 Re: Adquiriendo informacion del schema de una tabla/vista con libpq
Previous Message Eduardo Morras 2015-05-01 15:28:30 Adquiriendo informacion del schema de una tabla/vista con libpq