Los administradores de bases de datos MySQL solemos estar acostumbrados a muchas de sus sentencias SQL que están fuera del estándar, como es el caso de SHOW CREATE TABLE. En este artículo voy a demostrar cómo lograr el mismo resultado en servidores de bases de datos PostgreSQL.



En MySQL, el comando SHOW CREATE TABLE vuelca por salida estándar las sentencias SQL necesarias para crear una base de datos indicada como parámetro. PAra lograr el mismo efecto en un servidor de bases de datos Postgres, se puede recurrir al utilitario pg_dump (el cual se utiliza generalmente para volcar bases de datos).

Para volcar sólo una tabla con pg_dump se debe utilizar la opción -t. Además, para volcar sólo la estructura de la tabla, sin las sentencias para insertar sus filas (datos), agregar la opción --schema-only.

Por ejemplo, si se desea obtener las sentencias SQL de creación de la tabla "user", perteneciente al schema "webapp1" de la base de datos "db1", en la instancia corriendo en el servidor local en el puerto 5432, ejecutar el siguiente comando:

postgres@dbserver:~$ pg_dump -h localhost -p 5432 -t "webapp1.user" --schema-only db1
--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = webapp1, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: user; Type: TABLE; Schema: webapp1; Owner: postgres; Tablespace: 
--

CREATE TABLE user (
    id integer,
    nombre character varying(80),
    apellido character varying(80),
    dni integer,
    email character varying(60),
    telefono character varying(20),
    fecha_hora timestamp without time zone
);


ALTER TABLE user OWNER TO postgres;

--
-- Name: user; Type: ACL; Schema: webapp1; Owner: postgres
--

REVOKE ALL ON TABLE user FROM PUBLIC;
REVOKE ALL ON TABLE user FROM postgres;
GRANT SELECT,INSERT ON TABLE user TO r_webapp1;
GRANT ALL ON TABLE user TO admin;
GRANT SELECT ON TABLE user TO r_ro;
GRANT ALL ON TABLE user TO r_devel;


--
-- PostgreSQL database dump complete
--

La diferencia con la sentencia SHOW CREATE TABLE de MySQL es que, además del volcado de la estructura de la tabla, se vuelcan los permisos (grants) sobre la misma.

Referencias


Tal vez pueda interesarte


Compartí este artículo y dejá tu comentario