Remover dados duplicados no oracle

Se você trabalha na Oracle, alguns de seus dados podem aparecer várias vezes. Você pode remover essas duplicatas identificando-as e usando seu endereço de linha. Antes de começar, faça uma cópia da tabela caso precise consultá-la após excluir os dados.

Degraus

Método 1 de 4: detectar duplicatas

Imagem intitulada Excluir registros duplicados no Oracle Etapa 1
1. Identifique a duplicata. Nesse caso, identifique a duplicata da amostra, `Alan`. Certifique-se de que os registros que você está tentando excluir são realmente duplicados digitando o comando SQL abaixo.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 2
2. Pesquisar em uma coluna `Nomes`. No caso de uma coluna `Nomes`, preencha-a para `nome_coluna`.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 3
3. Pesquisar em outras colunas. Se você tentar encontrar duplicatas em outra coluna, diga a idade de Alan em vez de seu nome, você pode colocar `Age` antes de `column_name`, etc.
selecione column_name, count(column_name) do grupo de tabelas por column_name tendo contagem (column_name) > 1;

Método 2 de 4: Excluir uma única duplicata

Imagem intitulada Excluir registros duplicados no Oracle Etapa 4
1. Selecione `nomes de nomes`. Depois de `SQL` (Linguagem de Consulta Padrão) digite `selecione o nome dos nomes`.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 5
2. Excluir todas as linhas com o nome duplicado. Depois de `SQL` digite `delete from names where name=`Alan`;`. Observe que a capitalização é importante aqui, então isso removerá todas as linhas chamadas `Alan`. Digite `commit` depois de `SQL`.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 6
3. Digite a linha novamente sem uma duplicata. Agora que você excluiu todas as linhas com o nome de exemplo `Alan`, você pode colocar uma de volta digitando `insert into name values ​​(`Alan`);.` Após `SQL` digite `commit` para criar a nova linha.
Imagem intitulada Excluir registros duplicados no Oracle Step 7
4. Confira sua nova lista. Depois de concluir as etapas acima, você pode verificar se não possui dados duplicados com o comando `select *from names`.
SQL > selecione o nome dos nomes; NOME ----------------------------- Alan Carrie Tom Alan linhas selecionadas. SQL > delete de nomes onde name=`Alan`; linhas excluídas. SQL > comprometer-se; Confirmação concluída. SQL > inserir nos nomes valores(`Alan`); linha criada. SQL > comprometer-se; Confirmação concluída. SQL > selecione *de nomes; NOME ----------------------------- Alan Carrie Tom linhas selecionadas.

Método 3 de 4: remover várias duplicatas

Imagem intitulada Excluir registros duplicados no Oracle Etapa 8
1. Selecione o endereço da linha (ID da linha) que você deseja excluir. Depois de `SQL` digite `select rowid, name from names;`.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 9
2. Excluir a duplicata. Depois de `SQL` digite `delete from names a where rowid > (selecione min(rowid) dos nomes b onde b.nome=a.nome);` para remover duplicatas de dados.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 10
3. Verifique se há duplicatas. Depois de concluir o procedimento acima, verifique se você ainda tem dados duplicados digitando `select rowid, name from names;` e depois `comprometer`.
SQL > selecione rowid, nome de nomes; ROWIDNAME ------------------ ----------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan linhas selecionadas. SQL > delete from names a where rowid > (selecione min(rowid) dos nomes b onde b.nome=a.nome ); linhas excluídas. SQL > selecione rowid, nome de nomes; ROWIDNAME ------------------ ----------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom linhas selecionadas. SQL > comprometer-se; Confirmação concluída.

Método 4 de 4: Excluir Linhas de Colunas

Imagem intitulada Excluir registros duplicados no Oracle Step 11
1. Selecione as linhas. Depois de `SQL` digite `selecione *de nomes;` para ver as linhas escolhidas.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 12
2. Remova linhas duplicadas identificando sua coluna. Depois de `SQL` digite `delete from names a where rowid > (selecione min(rowid) dos nomes b onde b.nome=a.nome e b.idade=a.era);` para remover os dados duplicados.
Imagem intitulada Excluir registros duplicados no Oracle Etapa 13
3. Verifique se há duplicatas. Depois de concluir as etapas acima, digite `select *from names;` e depois `commit` para verificar se você removeu com sucesso todos os dados duplicados.
SQL > selecione *de nomes; NOME ---------------------- ---------- Alan50 Carrie51 Tom52 Alan50 linhas selecionadas. SQL > delete from names a where rowid > (selecione min(rowid) dos nomes b onde b.nome=a.nome e b.idade=a.era ); linha excluída. SQL > selecione *de nomes; NOME ---------------------- ---------- Alan50 Carrie51 Tom52 linhas selecionadas. SQL > comprometer-se; Confirmação concluída.

Avisos

  • Faça um backup da tabela em seu próprio login que você pode usar para mostrar como estava a situação antes da exclusão (caso sejam feitas perguntas).
SQL > criar mesa alan.names_backup as select *from names; Tabela criada.

Оцените, пожалуйста статью