Eu tenho uma tabela ABC em um banco de dados DB. Desejo criar cópias do ABC com os nomes ABC_1, ABC_2, ABC_3 no mesmo banco de dados. Como posso fazer isso usando o Management Studio (de preferência) ou consultas SQL?
Isso é para SQL Server 2008 R2.
Eu tenho uma tabela ABC em um banco de dados DB. Desejo criar cópias do ABC com os nomes ABC_1, ABC_2, ABC_3 no mesmo banco de dados. Como posso fazer isso usando o Management Studio (de preferência) ou consultas SQL?
Isso é para SQL Server 2008 R2.
Respostas:
Use SELECT ... INTO:
SELECT *
INTO ABC_1
FROM ABC;
Isso criará uma nova tabela ABC_1que possui a mesma estrutura de colunas ABCe contém os mesmos dados. As restrições (por exemplo, chaves, valores padrão), no entanto, não são copiadas.
Você pode executar essa consulta várias vezes com um nome de tabela diferente a cada vez.
Se você não precisa copiar os dados, apenas para criar uma nova tabela vazia com a mesma estrutura de coluna, adicione uma WHEREcláusula com uma expressão falsa:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *mais limpo do que o WHEREmétodo de declaração sempre falsa
No SSMS, expanda seu banco de dados no Object Explorer , vá para Tabelas , clique com o botão direito na tabela de seu interesse e selecione Script Table As , Create To , New Query Editor Window . Faça um localizar e substituir ( CTRL + H ) para alterar o nome da tabela (ou seja, coloque ABCno campo Localizar e ABC_1em Substituir por e clique em OK ).
As outras respostas que mostram como fazer isso pelo SQL também funcionam bem, mas a diferença com esse método é que você também obterá quaisquer índices, restrições e gatilhos.
Se você deseja incluir dados, após criar esta tabela execute o script abaixo para copiar todos os dados do ABC (mantendo os mesmos valores de ID se você tiver um campo de identidade):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERTcomo ON para permitir definir a coluna de identidade "manualmente", você misturou a ordem no seu exemplo. Além disso, você deve listar EXPLICITAMENTE suas colunas
Se você deseja duplicar a tabela com todas as suas restrições e chaves, siga as etapas abaixo:
Então, para copiar os dados, execute o seguinte script:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
Esta é outra opção:
select top 0 * into <new_table> from <original_table>