Tenga mucho cuidado al usar esto bajo carga y con alta concurrencia. Acabo de quemarme usando esto a escala, donde creamos alrededor de 50 tablas diferentes basadas en la misma tabla fuente, al mismo tiempo que insertamos en la tabla fuente desde otros procesos. Básicamente causó una fusión masiva de bloqueos y tuvo que reiniciar MySQL.
Mark B
66
Uhm, OP está confundido? Esta es descaradamente una respuesta incorrecta a la pregunta, si prestamos atención al título y al énfasis en la pregunta "... sin copiar los datos ..." La respuesta de RCNell es justamente la más votada. No estoy seguro de por qué este fue aceptado. Sólo digo'.
xyphenor
421
Tratar
CREATETABLE foo LIKE bar;
así que las claves y los índices también se copian.
Probablemente porque esta respuesta llegó 4 años después que la marcada como correcta
pythonian29033
1
@ Pierre-OlivierVares El texto de la documentación no es directamente relevante para la respuesta real. El texto de respuesta es conciso para mostrar cómo hacer lo que se hizo la pregunta, mientras que el enlace de documentación simplemente proporciona un contexto adicional. Como tal, hinchar la respuesta con el texto de la documentación no es útil.
Abion47
27
SHOW CREATETABLE bar;
obtendrá una declaración de creación para esa tabla, editará el nombre de la tabla o cualquier otra cosa que desee y luego ejecútela.
Esto le permitirá copiar los índices y también ajustar manualmente la creación de la tabla.
También puede ejecutar la consulta dentro de un programa.
¿Cómo podría convertirse show create table baren una declaración ejecutable dinámicamente?
Pacerier
el resultado dado por show create table barya es ejecutable, si el script tiene el permiso para crear tablas, puede analizarlo y luego ejecutar también las declaraciones de alterar tabla.
Timo Huovinen
create table...no copiará índices. esta respuesta es la mejor opción
foo
ybar
son variables arbitrarias sin sentido , muy parecidas a Alice y Bob .Respuestas:
Tratar:
O:
fuente
select * into foo from bar where 1=0
create table NewTable like OldTable
sea una opción para ti. Enlace copiado de la respuesta eliminada.Tratar
así que las claves y los índices también se copian.
Documentación
fuente
CREATE TABLE new_tbl LIKE orig_tbl;
Copias privilegios también? ¿O deben copiarse manualmente?obtendrá una declaración de creación para esa tabla, editará el nombre de la tabla o cualquier otra cosa que desee y luego ejecútela.
Esto le permitirá copiar los índices y también ajustar manualmente la creación de la tabla.
También puede ejecutar la consulta dentro de un programa.
fuente
show create table bar
en una declaración ejecutable dinámicamente?show create table bar
ya es ejecutable, si el script tiene el permiso para crear tablas, puede analizarlo y luego ejecutar también las declaraciones de alterar tabla.create table...
no copiará índices. esta respuesta es la mejor opciónSolo quiero clonar la estructura de la tabla:
También quiere copiar los datos:
fuente