Eu tinha uma tabela da qual queria excluir muitas linhas, mas estava falhando devido a restrições de memória. Eu vi uma sugestão para "simplesmente" copiar todas as linhas que não quero excluir em uma nova tabela, descartar a tabela antiga e renomear a nova tabela para o nome da tabela antiga. Isso seria bom, exceto para outros objetos que dependem da tabela original. Pelo que posso dizer, isso significa que eu teria que descartar o cascade e recriar tudo o que depende da tabela original.
Existe uma maneira de script tudo o que depende da tabela original para que eu possa recriá-los facilmente no pgadmin ou no psql?
Como alternativa, existe uma maneira de ignorar a dependência por tempo suficiente para excluir a tabela antiga e renomear a nova tabela para o nome da tabela antiga?
Eu acredito que é assim que o pg_repack funciona, então deve haver uma maneira.
DROP TABLE example CASCADE;
vai derrubar a mesa
example
. e solte todas asREFERENCES
restrições que apontam para essa tabela.então, depois de substituir a tabela, você também precisará reconstruir as referências.
para obter as dependências que você pode usar
pg_dump --schema-only
e, em seguida, grep paraREFERENCES example(
Você não poderá reconstruir as referências até que os dados necessários estejam presentes na tabela.