Copiar uma tabela em SQL

Copiar Uma Tabela Em Sql



Embora superficialmente, a duplicação de dados pode parecer ineficiente; às vezes pode desempenhar um papel crucial em casos em que você precisa ter uma cópia quase exata da mesma tabela.

Em SQL, podemos usar vários métodos e técnicas para copiar uma tabela existente e ter a nova tabela com um novo nome, mas com os mesmos dados. Isso pode ser muito útil em determinadas tarefas como backups, transformação de dados, alterações temporárias de dados sem afetar a tabela principal e muito mais.







Neste guia, exploraremos esses métodos e aprenderemos como podemos copiar uma tabela em bancos de dados SQL. Devido às diferenças na forma como os vários mecanismos de banco de dados SQL lidam com a cópia da tabela, não cobriremos todos os métodos de cada banco de dados.



Tentaremos cobrir pelo menos um para cada mecanismo de banco de dados, sempre que houver suporte, para mostrar como você pode copiar uma tabela para cada mecanismo de banco de dados compatível.



Método 1: Global (usando a instrução CREATE TABLE)

O método mais comum e simplista de copiar uma tabela é usar a instrução CREATE TABLE.





Ao contrário de uma instrução CREATE TABLE normal, passamos uma instrução SELECT que contém a estrutura e os dados da tabela de origem.

A sintaxe é a seguinte:



CRIAR TABELA nova_tabela AS
SELECIONAR * DE tabela_fonte;

Isso nos permite criar uma nova tabela com o nome especificado na tabela de origem.

Tomemos por exemplo o banco de dados de amostra Sakila. Suponha que queiramos criar uma tabela semelhante à tabela de aluguéis.

Podemos usar a técnica anterior conforme mostrado no exemplo de consulta a seguir:

CRIAR TABELA de aluguel_cópia AS
SELECIONAR * DE aluguel;

Isso deve criar uma nova tabela chamada “rental_copy” que contém a mesma estrutura e dados da tabela de aluguel.

Você pode verificar selecionando os dados da tabela da seguinte forma:

SELECIONAR * DE aluguel_cópia;

Deve conter os dados exatos da tabela de aluguel.

Método 2: Global (usando a instrução INSERT INTO)

Outro método que é suportado globalmente por uma ampla variedade de bancos de dados SQL é usar a instrução INSERT INTO.

Esta técnica nos permite copiar de uma tabela para outra. Ao contrário de CREATE TABLE e SELECT, este método nos permite buscar os dados seletivamente.

Isso é útil quando precisamos de mais controle no processo de cópia. Podemos usar a sintaxe conforme mostrado a seguir:

INSERIR NA target_table ( coluna1, coluna2, ... )
SELECIONE coluna1, coluna2, ...
DE tabela_fonte;

Neste caso, podemos especificar as colunas que desejamos incluir na nova tabela sem realmente buscar tudo da tabela original.

Veja a seguinte consulta, por exemplo:

INSERIR
EM
aluguel_cópia ( id_dealuguel,
data_aluguel,
data de retorno )
SELECIONAR
id_dealuguel,
data_aluguel,
data de retorno
DE
aluguel r;

Uma desvantagem desse método é que pode exigir que você crie uma tabela semelhante com as colunas que deseja incluir. Isso pode ser repetitivo e eficiente ao trabalhar com um grande conjunto de dados.

Método 3: copiar a estrutura da tabela

Em outros casos, você pode encontrar casos em que está interessado na estrutura da tabela sem precisar dos dados armazenados na tabela.

Nesse cenário, você pode usar a instrução CREATE TABLE em conjunto com a cláusula LIKE da seguinte forma:

CRIAR TABELA nova_tabela ( LIKE tabela_fonte ) ;

Isso deve criar uma nova tabela com o nome especificado e estrutura semelhante à “source_table” sem realmente copiar os dados.

Copiando as tabelas entre bancos de dados

Para copiar as tabelas entre bancos de dados diferentes, podemos exportar os dados do banco de dados de origem e importá-los para o banco de dados de destino.

Isso normalmente envolve o uso de formatos baseados em arquivo, como CSV ou ferramentas específicas de banco de dados. Você pode consultar a documentação do seu banco de dados sobre como fazer isso, pois isso pode variar dependendo do mecanismo de banco de dados.

Método 4: usando os servidores vinculados (SQL Server)

No SQL Server, podemos copiar as tabelas entre bancos de dados usando Linked Servers.

Os Linked Servers permitem-nos estabelecer uma ligação a uma base de dados remota e consultar ou transferir os dados entre eles.

A sintaxe é a seguinte:

INSIRA DENTRO DE [ LinkedServerName ] . [ Nome do banco de dados ] . [ Nome do Esquema ] . [ tabela_alvo ]
SELECIONAR * DE tabela_fonte;

Isso permite a conexão remota e transferências de dados entre servidores remotos.

Conclusão

Neste tutorial, aprendemos como usar e trabalhar com vários métodos e técnicas de cópia de uma tabela em SQL.