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