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
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 |