Sé la declaración:
create table xyz_new as select * from xyz;
¿Qué copia la estructura y los datos, pero qué pasa si solo quiero la estructura?
sql
oracle
copy
database-table
Andrés
fuente
fuente
Respuestas:
Solo use una cláusula where que no seleccione ninguna fila:
Limitaciones
Las siguientes cosas no se copiarán en la nueva tabla:
Esto tampoco maneja particiones
fuente
Usé el método que aceptó mucho, 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:
Esto le dará el texto completo de la declaración de creación que puede modificar según lo desee para crear la nueva tabla. Tendría que cambiar los nombres de la tabla y todas las restricciones, por supuesto.
(También puede hacerlo en versiones anteriores con EXP / IMP, pero ahora es mucho más fácil).
Editado para agregar Si la tabla que busca está en un esquema diferente:
fuente
My_table_name
es la tabla existente Pero, ¿cómo obtengo el nombre de mi nueva tabla creada?new_table = dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME', 'OTHER_SCHEMA_NAME' ).
Mientras tanto, avíseme qué hace LONG aquí.Usando el desarrollador 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 los generará también para usted. Solo debe tener cuidado en el orden en que los coloca y saber cuándo activar o desactivar los desencadenantes.
fuente
SQL
Para evitar repetir una y otra vez e insertar nada en función de la condición donde 1 = 2
fuente
fuente
Puede hacer esto,
Create table New_table as select * from Old_table where 1=2 ;
pero tenga cuidado. La tabla que crea no tiene ningún índice, paquete, etc., como la tabla_viejafuente
Cree una nueva tabla vacía usando el esquema de otra. Simplemente agregue una cláusula WHERE que hace que la consulta no devuelva datos:
fuente
también puedes hacer un
luego truncar la tabla
abc_new
. Espero que esto sea suficiente para su requerimiento.fuente
Simplemente escriba una consulta como:
donde
new_table
está el nombre de la nueva tabla que desea crear yold_table
es el nombre de la tabla existente cuya estructura desea copiar, esto solo copiará la estructura.fuente
WHERE 1 = 0
o condiciones falsas similares funcionan, pero no me gusta cómo se ven. El código marginalmente más limpio para Oracle 12c + IMHO esCREATE TABLE bar AS SELECT * FROM foo FETCH FIRST 0 ROWS ONLY;
Se aplican las mismas limitaciones: solo las definiciones de columna y su nulabilidad se copian en una nueva tabla.
fuente
De otra manera, puede obtener ddl de la creación de la tabla desde el comando que se detalla a continuación y ejecutar la creación.
TYPE
esTABLE
,PROCEDURE
etc.Con este comando puede obtener la mayoría de ddl de los objetos de la base de datos.
fuente
GET_DDL
distinguen entre mayúsculas y minúsculas.Source_table es la tabla de la que quieres copiar la estructura.
fuente
Con pl / sql developer puede hacer clic con el botón derecho en table_name en el espacio de trabajo sql o en el explorador de objetos, luego hacer clic en "ver" y luego hacer clic en "ver sql" que genera el script sql para crear la tabla junto con todas las restricciones , índices, particiones, etc.
Luego ejecuta el script usando new_table_name
fuente
copiar sin datos de la tabla
copiar con datos de la tabla
fuente
- Esto creará una tabla y copiará todos los datos.
- Esto tendrá la misma estructura de tabla pero todos los datos copiados serán eliminados.
Si desea superar las limitaciones especificadas por la respuesta: ¿Cómo puedo crear una copia de una tabla de Oracle sin copiar los datos?
fuente
La tarea anterior se puede completar en dos simples pasos.
PASO 1:
Lo
query
anterior crea un duplicado de una tabla (con contenido también).Para obtener la estructura, elimine el contenido de la tabla usando.
PASO 2:
Espero que esto resuelva tu problema. Y gracias a las publicaciones anteriores. Me dio mucha información.
fuente
truncate
versión. Además de asignar extensiones para todos los datos, no los está liberando al eliminarlos, por lo que potencialmente está desperdiciando espacio a menos que la tabla crezca al tamaño anterior. Y está generando deshacer / rehacer tanto en la inserción como en la eliminación. La respuesta de Jim simplemente evita todo eso.