2009-03-05 9 views
9

Estoy trabajando con SQL Server (soy un novato de SQL Server) y tratando de modificar una tabla. Quiero CREATE TABLE LIKE para almacenar de forma segura datos mientras dejo caer las llaves y las limitaciones y los demás rigamorole que SQL Server parece requerir cuando se altera en la tabla original, pero no he sido capaz de encontrar una coincidencia a ese comando ...¿Cuál es el equivalente de 'CREATE TABLE ... LIKE ...' en SQL Server

+0

utilizo Visual Studio SQL Server Explorer para este propósito, que permite actualizaciones automáticas de estructura de base de datos. – Ginden

Respuesta

14

se pueden hacer

SELECCIONAR * INTO #MyTable_tmp FROM MyTable

A continuación, modifique su MyTable y copie sus datos nuevamente. Otro Los enfoques que he visto es crear una nueva tabla llamada Mytable_Tmp (No es una tabla temporal), que será su nueva tabla.

Luego copie sus datos haciendo las migraciones que necesite. Luego soltará la tabla original y hará un cambio de nombre en Mytable.

O puede obtener una de las muchas herramientas excelentes que comparan bases de datos y generan scripts de diferencias o VSTS DB Edition (Viene con el desarrollador) y puede hacer un script diff desde un archivo de proyecto a un DB.

Editar

Al ejecutar SELECT * FROM MyTable EN #MyTable, SQL Server crea una nueva tabla temporal denominada #MyTable que coincide con cada columna y el tipo de datos de su cláusula select. En este caso, estamos seleccionando * para que coincida con MyTable. Esto solo crea las columnas en las que no se copian los valores predeterminados, los índices de restricciones o cualquier otra cosa.

+0

Mi pregunta no es cómo poner datos en una tabla temporal ya existente. Me preocupa más crear una tabla temporal que coincida con la tabla existente. Tengo docenas de tablas que necesito modificar y no quiero tener que crear las tablas temporales a mano. – Ichorus

+0

¡Ahh! ¡Muy bien! ¡Gracias! – Ichorus

+0

¿Y las llaves? ¿índice? ¿llaves extranjeras? –

17

¿quieres recrear la misma estructura?

¿qué tal esto

SELECT * 
into test 
FROM myRealTable 
where 0=1 

hay datos se insertarán en la nueva tabla

+2

SELECCIONAR arriba 0 * en prueba FROM myRealTable, también obtendrá el mismo resultado –

Cuestiones relacionadas