Saltar al contenido

¿Cómo puedo crear una copia de una tabla de Oracle sin copiar los datos?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *