SQL SERVER – Duplicar una tabla

Si estás buscando una forma eficiente de realizar duplicar una tabla en sql server, ¡has llegado al lugar correcto! Ya sea para realizar pruebas, crear entornos de desarrollo o simplemente tener una copia de seguridad temporal, duplicar una tabla en SQL Server es una tarea más sencilla de lo que muchos imaginan. En este breve post, te mostraré dos métodos rápidos y efectivos para lograrlo, permitiéndote elegir la opción que mejor se adapte a tus necesidades específicas.

¡Vamos a ello!

Copiar la estructura de la tabla de sql server

El método SELECT INTO es, quizás, la forma más directa y veloz de duplicar una tabla de sql server incluyendo tanto la definición de la estructura (columnas, tipos de datos y restricciones NOT NULL) como todos los datos contenidos en la tabla original.

Su sintaxis es intuitiva y fácil de recordar:

SELECT * Into DestinationTableName From SourceTableName Where 1 = 2 

¿Por qué funciona WHERE 1 = 2?

La condición WHERE 1 = 2 siempre evaluará a falso para todas las filas de la tabla SourceTableName. Como resultado, la consulta SELECT * FROM SourceTableName WHERE 1 = 2 no devolverá ninguna fila. Sin embargo, SQL Server aún procesa la definición de las columnas de la tabla SourceTableName para determinar la estructura del conjunto de resultados. Esta estructura es luego utilizada por la cláusula INTO para crear la nueva tabla DestinationTableName sin insertar ningún dato.

Cuándo es útil copiar solo la estructura:

  • Cuando necesitas una tabla vacía con la misma estructura para importar datos desde otra fuente.
  • Para crear una tabla temporal con la misma estructura para realizar transformaciones o cálculos antes de insertar datos.
  • Como base para diseñar una nueva tabla relacionada con la tabla original, donde solo la estructura inicial es relevante.

Duplicar toda la tabla en sql server

La opción más directa y concisa para realizar una copia completa de una tabla existente en SQL Server, incluyendo tanto su estructura como todos sus datos, es emplear la instrucción SELECT * INTO. Esta funcionalidad permite crear una nueva tabla a partir del resultado de una consulta SELECT. En el caso de querer una réplica exacta, seleccionamos todas las columnas de la tabla original.

La sintaxis básica es la siguiente:

SELECT * INTO MyNewTable FROM MyTable

No se copiarán las constraints o índices.

UPDATE

Copiar los índices es algo más complicado, podéis intentarlo con lo que se propone aquí:

18 thoughts on “SQL SERVER – Duplicar una tabla

  1. Daniel says:

    Con esto he clonado la tabla completa junto con los datos, lo que me gustaría saber es si puedo trabajar en forma independiente con la tabla clonada sin afectar a la original?

  2. sALVADOR says:

    Hola pido ayuda con mi problema al respaldar :
    al ejecutar BACKUP DATABASE a una base de datos “Catalagos” me maraca que no existe o el nombre esta incorrecto( pero si existe y esta correcto el nombre). Lo ejecuto respaldando la base “master” y si funciona, pero con ninguna de mis bases de datos funciona. Enlisto las bases de datos que estan en master y veo que en el campo nombre vienen con el path y no se sis sea eso. Saludos, soy nuevo y uso Microsoft Visual Studio Community 2019.

    CODIGO:
    Try
    Enlace.Conecta(FuncSub.MyConn(“Catalagos”))
    Dim Lbase As String = “Catalagos”
    Cadena = “BACKUP DATABASE ” & Lbase & ” to Disk=’C:\ODIM\Backup.bak’ with init,stats=10″
    ‘Cadena = “BACKUP DATABASE ODIM to Disk=’C:\ODIM\Backup.bak’ with init,stats=10”
    cmd = New SqlCommand(Cadena, conexion)
    ‘MsgBox(“Se jecuta cadena: ” & Cadena & ” en conexion ABIERTA: ” & conexion.ConnectionString)

    cmd.ExecuteNonQuery()
    MsgBox(“Respaldo efectuado”)
    ‘conexion.Close()
    Catch ex As Exception
    MsgBox(“Error al respladar” + ex.Message + ” #” + ex.HResult.ToString)
    ‘conexion.Close()
    End Try

Leave a Reply

Your email address will not be published. Required fields are marked *