Hola usuario de nuestro sitio web, hallamos la solución a tu búsqueda, continúa leyendo y la encontrarás a continuación.
Solución:
Simplemente use una cláusula where que no seleccione ninguna fila:
create table xyz_new as select * from xyz where 1=0;
Limitaciones
Las siguientes cosas no se copiarán en la nueva tabla:
- secuencias
- disparadores
- índices
- algunas restricciones pueden no ser copiadas
- registros de vista materializados
Esto tampoco maneja particiones.
Utilicé mucho el método que aceptaste, pero como alguien señaló, no duplica las restricciones (excepto NOT NULL, creo).
Un método más avanzado si desea duplicar la estructura completa es:
SET LONG 5000
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' ) FROM DUAL;
Esto le dará el texto completo de la declaración de creación que puede modificar como desee para crear la nueva tabla. Tendría que cambiar los nombres de la tabla y todas las restricciones, por supuesto.
(También podría hacer esto en versiones anteriores usando EXP/IMP, pero ahora es mucho más fácil).
Editado para agregar
Si la tabla que está buscando está en un esquema diferente:
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME', 'OTHER_SCHEMA_NAME' ) FROM DUAL;
Usando el desarrollador de sql, seleccione la tabla y haga clic en la pestaña DDL
Puede usar ese código para crear una nueva tabla sin datos cuando lo ejecuta en una hoja de trabajo sql
sqldeveloper es una aplicación gratuita de Oracle.
Si la tabla tiene secuencias o disparadores, el ddl a veces también los generará para usted. Solo debe tener cuidado en el orden en que los hace y saber cuándo activar o desactivar los disparadores.
Comentarios y valoraciones
Te invitamos a corroborar nuestra misión ejecutando un comentario o dejando una valoración te damos la bienvenida.