¿Hay alguna forma de copiar la estructura de una tabla en una nueva tabla, sin datos, incluidas todas las claves y restricciones?
sql
postgresql
Alex S
fuente
fuente
CREATE TABLE new (like old, extra_column text);
Bueno, lo más cercano que puede obtener con SQL es:
create table new ( like old including defaults including constraints including indexes );
Pero no copiará todo. Las cosas más importantes que faltan son LLAVES EXTRANJERAS. Además, los disparadores tampoco se copian. No estoy seguro de otras cosas.
Otra forma es volcar la estructura de la tabla, cambiar su nombre en el volcado y volver a cargarlo:
Pero tenga cuidado, que ese sed simplista también cambiará lo antiguo a lo nuevo en otros lugares (por ejemplo, si tiene en la columna de su tabla llamada "is_scolded" se convertirá en "is_scnewed").
La pregunta es más bien: ¿por qué lo necesita? Porque para varios propósitos, usaría diferentes técnicas.
fuente
including constraints
no funciona en PostgreSQL 8.3Para copiar una tabla por completo, también se puede utilizar la forma abreviada con el comando TABLE:
CREATE TABLE films2 AS TABLE films WITH NO DATA;
Más detalles aquí
fuente
Eche un vistazo a pgAdmin , la forma más sencilla de hacer lo que quiera con mucho.
Haga clic con el botón derecho en la tabla, Scripts - Crear.
fuente
Qué tal si
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)
respuesta de postgresql.org
fuente