Last active
April 11, 2021 16:12
-
-
Save jonathanalves/d7669ff9c7a29817c2ff975fcf93c42f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ALTER TABLE indicador_pessoal_versao DROP CONSTRAINT uk_2s3c25we0a91ejyy5moa8623j; | |
update indicador_pessoal_versao | |
set hashcode = md5(CONCAT_WS(';', | |
coalesce(indicador_Pessoal_Id::varchar, '') | |
, coalesce(nome, '') | |
, coalesce(documento, '') | |
, coalesce(documento_Desconhecido::varchar, '') | |
, coalesce(denominacao, '') | |
, coalesce(rg, '') | |
, coalesce(cnh, '') | |
, coalesce(cip, '') | |
, coalesce(passaporte, '') | |
, coalesce(inscricao_Municipal, '') | |
, coalesce(outros_Documentos, '') | |
, coalesce(profissao, '') | |
, coalesce(nome_Pai, '') | |
, coalesce(nome_Mae, '') | |
, coalesce(to_char(nascimento, 'yyyy-MM-dd'), '') | |
, coalesce(sexo, '') | |
, coalesce(nacionalidade, '') | |
, coalesce(cep, '') | |
, coalesce(estado, '') | |
, coalesce(cidade, '') | |
, coalesce(bairro, '') | |
, coalesce(quadra, '') | |
, coalesce(lote, '') | |
, coalesce(logradouro, '') | |
, coalesce(numero, '') | |
, coalesce(complemento, '') | |
, coalesce(pais, '') | |
, coalesce(cep_Comercial, '') | |
, coalesce(estado_Comercial, '') | |
, coalesce(cidade_Comercial, '') | |
, coalesce(bairro_Comercial, '') | |
, coalesce(quadra_Comercial, '') | |
, coalesce(lote_Comercial, '') | |
, coalesce(logradouro_Comercial, '') | |
, coalesce(numero_Comercial, '') | |
, coalesce(complemento_Comercial, '') | |
, coalesce(pais_Comercial, '') | |
, coalesce(conjuge_id::varchar, '') | |
, coalesce(estado_Civil, '') | |
, coalesce(regime_Casamento, '') | |
, coalesce(to_char(data_casamento, 'yyyy-MM-dd'), '') | |
, coalesce(detalhes_Regime, '') | |
, coalesce(casamento_Apos_Lei6515::varchar, '') | |
, coalesce(possui_Uniao_Estavel::varchar, '') | |
, coalesce(possui_Participacao_Estrangeira::varchar, '') | |
, coalesce(exposta_Politicamente::varchar, '') | |
, coalesce(falecido::varchar, '') | |
, coalesce(menor::varchar, '') | |
)); | |
CREATE MATERIALIZED VIEW IF NOT EXISTS migracao.duplicados as | |
select hashcode, indicador_pessoal_id | |
from indicador_pessoal_versao ip | |
group by hashcode, indicador_pessoal_id having count(*) > 1 | |
---------------------- | |
with versoes as ( | |
select | |
distinct on (indicador_pessoal_id) indicador_pessoal_id, id, atualizacao, cadastro, versao | |
from indicador_pessoal_versao | |
order by indicador_pessoal_id, atualizacao desc nulls last, cadastro desc nulls last, versao desc nulls last | |
) | |
update indicador_pessoal set versao_atual_id = v.id from versoes v where indicador_pessoal.id = v.indicador_pessoal_id; | |
---------------------- | |
drop MATERIALIZED VIEW IF EXISTS migracao.pessoas cascade; | |
CREATE MATERIALIZED VIEW IF NOT EXISTS migracao.pessoas as | |
SELECT distinct indicador_pessoal_versao_id pessoa | |
FROM ato_envolvido | |
union | |
SELECT distinct procurador_id pessoa | |
FROM ato_envolvido | |
union | |
SELECT distinct solicitante_id | |
FROM protocolo | |
union | |
SELECT distinct tomador_id | |
FROM protocolo | |
union | |
SELECT distinct interessado_id | |
FROM protocolo | |
union | |
SELECT distinct solicitante_id | |
FROM indisponibilidade_ordem | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM documentacao_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM ocorrencia_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM notificacao_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM oficio_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM documentacao_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM indicador_real_proprietario | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM indicador_real_restricao | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM registro_auxiliar_restricao | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM registro_auxiliar_envolvido | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM nota_fiscal | |
union | |
SELECT distinct conjuge_id | |
FROM indicador_pessoal_versao | |
union | |
SELECT distinct versao_atual_id | |
FROM indicador_pessoal | |
union | |
SELECT distinct indicador_pessoal_versao_id | |
FROM ato_matricula_virtual | |
union | |
SELECT distinct fornecedor_id | |
FROM lancamento; | |
create index pessoas_usadas on migracao.pessoas(pessoa); | |
drop MATERIALIZED VIEW IF EXISTS migracao.pessoas_nao_usadas cascade; | |
CREATE MATERIALIZED VIEW IF NOT EXISTS migracao.pessoas_nao_usadas as | |
SELECT id, nome, documento, indicador_pessoal_id | |
FROM indicador_pessoal_versao ipv | |
WHERE NOT exists ( | |
SELECT 1 | |
FROM migracao.pessoas where pessoa = ipv.id | |
) | |
limit 1000; | |
------------ | |
DO $$ | |
declare | |
execu record; | |
linha record; | |
pos int; | |
begin | |
pos := 1; | |
FOR execu IN | |
SELECT id FROM usuario | |
loop | |
FOR linha IN | |
SELECT id FROM migracao.pessoas_nao_usadas | |
loop | |
RAISE NOTICE 'deletando id = % - %',linha.id,pos; | |
pos := pos + 1; | |
EXECUTE 'DELETE FROM indicador_pessoal_versao where id = ''' || linha.id || ''''; | |
COMMIT; | |
END LOOP; | |
REFRESH MATERIALIZED VIEW migracao.pessoas; | |
REFRESH MATERIALIZED VIEW migracao.pessoas_nao_usadas; | |
END LOOP; | |
END$$; | |
delete | |
from indicador_pessoal | |
where not exists (select 1 from indicador_pessoal_versao where indicador_pessoal_id = indicador_pessoal.id) | |
and not exists (select 1 from indisponibilidade where indicador_pessoal_id = indicador_pessoal.id ) | |
and not exists (select 1 from socio where indicador_pessoal_id = indicador_pessoal.id ) | |
----------------------------------- | |
DO $$ | |
declare | |
execu record; | |
linha record; | |
pos int; | |
begin | |
pos := 1; | |
FOR execu IN | |
SELECT id FROM usuario | |
loop | |
FOR linha IN | |
SELECT id FROM migracao.pessoas_nao_usadas | |
loop | |
RAISE NOTICE 'deletando id = % - %',linha.id,pos; | |
pos := pos + 1; | |
BEGIN | |
EXECUTE 'DELETE FROM indicador_pessoal_versao where id = ''' || linha.id || ''''; | |
COMMIT; | |
EXCEPTION | |
WHEN others THEN | |
-- we ignore the error | |
END; | |
END LOOP; | |
REFRESH MATERIALIZED VIEW migracao.pessoas; | |
REFRESH MATERIALIZED VIEW migracao.pessoas_nao_usadas; | |
END LOOP; | |
END$$; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment