2015-05-01 10:28 GMT-05:00 Eduardo Morras <emorr...@yahoo.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@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Reply via email to