Em 22 de agosto de 2014 21:43, Danilo Silva <danilo.dsg.go...@gmail.com>
escreveu:

> Pessoal,
>
> Possuo uma tabela de histórico de leitura, onde cada registro possui o id
> da tabela pai:
>
> tabela_documento = tabela pai (contém os dados principais do objeto)
> tabela_historico = historico de leituras (contém data, hora, origem e
> destino de cada objeto).
>
> Resumindo, para cada registro na tabela pai, eu posso ter vários registros
> na tabela de histórico.
>
> O meu problema está que por uma falha na programação, o sistema não
> obedeceu essa regra, ficou no relacionamento 1 para 1.
>
> Preciso agora corrigir isso, pegar todos os registros da tabela de
> histórico e atualizá-los com um único id da tabela pai correspondente.
>
> Pensei em utilizar a querie abaixo, onde eu monto o comando de update na
> tabela de histórico e delete na tabela pai
>
> SELECT
>     , 'UPDATE historico SET idpai =
> '||split_part(string_agg(idpai::text,','),',',1)||' WHERE (idhistorico IN
> ('||string_agg(idhistorico::text,',')||'));'
>     , 'DELETE FROM tabela_pai WHERE (idpai IN
> ('||string_agg(idpai::text,',')||')) AND (idpai <>
> '||split_part(string_agg(idpai::text,','),',',1)||');'
> FROM historico GROUP BY codempresa,codcliente,codproduto,codbarras HAVING
> COUNT(*) > 1
>
> mas encontrei 2 problemas, o primeiro é a demora no select, cancelei o
> select após 25 minutos (a tabela possui em torno de 980 mil registros), o
> segundo é o limite de caracteres de retorno da função string_agg (retorna
> parte dos códigos, pois no final fica "(...)".
>
> Vamos lá, existe uma forma melhor de executar o eu preciso?
>
> A função string_agg realmente possui essa limitação?
>
>
> ​Pessoal esqueci de mencionar que executei a select no pgadmin, estive
vendo pelo psql e parece que a limitação de caracteres da função string_agg
não acontece, talvez seja alguma coisa do pgadmin.

[]s
Danilo​
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a