como posso mudar o nome de uma tabela em sql db2?
estou a tentar mudar o nome de uma tabela em db2 assim
rename table schema1.mytable to schema2.mytable
mas obtendo a seguinte mensagem de erro:
the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
Qual é o problema aqui?... Estou a usar a sintaxe exacta da documentação da IBM publib.
5 answers
Não pode alterar o esquema de um dado objecto. Tens de recriá-lo.
Há várias maneiras de fazer isso:- Se só tem uma tabela, Pode exportar e importar/carrega a mesa. Se você usar o formato IDX, o DDL será incluído no arquivo gerado. Se usar outro formato, a tabela foi criada.
-
Pode recriar a tabela usando:
Create table schema2.mytable like schema1.mytable
Você pode extrair o DDL com a Ferramenta db2look
- se mudar o nome do esquema para um esquema dado, pode utilizar ADMINIST_COPY_SCHEMA
Estas duas últimas opções apenas criam a estrutura da tabela, e você ainda precisa importar os dados. Depois de ter criado a tabela, você insere os dados de diferentes maneiras:
-
Inserir directamente
insert into schema2.mytable select * from schema1.mytable
Via carregar a partir do cursor
- através de um carregamento ou importação de um ficheiro (o ficheiro exportado na etapa anterior)
Finalmente, pode criar umpseudónimo . É mais fácil, e você não tem que lidar com as relações.
Pode mudar facilmente o nome de uma tabela com esta declaração:
RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;
E se o deixares como está e criares um pseudónimo com o novo nome e esquema.
Mudar o nome de uma tabela significa mudar o nome de uma tabela dentro do mesmo esquema .para mudar o nome de outro esquema, o db2 chama a sua alcunha:
Db2 create alias for