Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Duplicar, copiar ou fazer backup de tabelas em MySQL, MariaDB, Oracle, PostgreSQL, DB2 e SQLite com Create Table As SQL

No sistema de banco de dados Oracle, PostgreSQL, DB2, MySQL, MariaDB e SQLite, existe um bom recurso de comando chamado Criar tabela como que permite a fácil duplicação de uma tabela com dados de outra ou algumas outras tabelas. O comando SQL também pode ser usado para 'copiar e colar' uma tabela exatamente ou fazer backup dos dados de uma tabela antes de realizar a consulta de manipulação de dados na tabela original, caso o script tenha erro e a data do backup possa ser usada para restaurar ao estado original . Criar tabela como irá criar uma nova tabela construída a partir do conteúdo do conjunto de dados ou conjunto de resultados recuperado por um Selecionar Consulta SQL de uma tabela que já existe no banco de dados.

A sintaxe da instrução Create Table As SQL é:
CREATE TABLE table_name [ ( column_name [, ...] ) ]
             AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name

Substitua table_name pelo nome da nova tabela que será criada. O nome da coluna é opcional, onde você pode especificar várias colunas incluindo seus nomes em uma lista delimitada por vírgulas. Caso contrário, a estrutura da nova tabela será baseada nos nomes das colunas, tipos e número de colunas retornadas pela instrução Select, juntamente com os dados da linha. Se você especificar o nome da coluna, observe que deve haver o mesmo número de colunas especificadas que são retornadas por select.

A instrução select no final do comando create table as deve ser válida e tem o número de destinos selecionados correspondente ao número de colunas na lista de colunas opcional que precede a cláusula AS. Pode ser uma instrução select complexa que recupera dados de várias tabelas. Se a lista de colunas opcional for especificada entre parênteses, o asterisco (*) não poderá mais ser usado na instrução select.

Por exemplo,
CREATE TABLE demo_backup
AS SELECT * FROM demo;

A instrução SQL acima criará uma tabela de backup de réplica exata chamada demo_backup com dados e estrutura (colunas) da tabela de demonstração.

O erro possível se você especificar a lista de colunas opcional é:

ERRO:CREATE TABLE/AS SELECT tem contagem de colunas incompatíveis

Se você encontrar essa mensagem de erro, isso ocorre porque a lista opcional de colunas entre parênteses contém um número diferente de linhas do que a instrução select retorna. Verifique novamente se o número de colunas especificado é o mesmo com os resultados esperados do conjunto de resultados selecionado.
ObservaçãoAlguns sistemas de banco de dados suportam a sintaxe CREATE TABLE … LIKE que cria uma tabela vazia com base na definição de outra tabela, incluindo quaisquer atributos de coluna e índices definidos na tabela original. A diferença é que a sintaxe CREATE TABLE … SELECT também copia os dados.