- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por
burga.
-
AutorPosts
-
14 de fevereiro de 2011 às 6:59 pm #98235
mpvargas
ParticipanteCaros Amigos,
Preciso atualizar todos os dias uma base de desenvolvimento, gostaria de atualizar somente os dados para ganhar tempo…
A forma mais prática que encontrei foi através do Expdp/Impdp
Blz… até aí tudo bem
Criei um script para rodar de madrugada, pego o backup e faço o IMPDP com a opção TABLE_EXISTS_ACTION = TRUNCATE
Só que me deparei com o seguinte problema… Como quero atualizar somente os dados, existem algumas tabelas que dão erro porque o IMPDP não atualiza campos do tipo BLOB ou LONG RAW…
Tentei com o EXPORT/IMPORT e não encontrei a opção de atualizar uma tabela existente…
Existe esta opção no IMPORT? Ou temos que dropar a tabela antes…
Obrigado pela ajuda15 de fevereiro de 2011 às 2:38 am #98242burga
ParticipanteA saída é:
- Apagar os dados da tabela a ser atualizada;
- Utilizar a cláusula TABLE no comando imp especificando a tabela que quer importar e a cláusula IGNORE=Y para ignorar os erros de tabela já existente.
Ou, como você mesmo disse, você pode dropar a tabela antes.
Lembrando que em ambos os casos deve se ter certeza de que esta “atualização” não causará inconsistências nos dados das tabelas (relacionamentos, etc), mas sei que você já sabe disso… 😆
15 de fevereiro de 2011 às 3:57 pm #98252mpvargas
ParticipanteRicardo …. valeu pela dica
A questão é que são mais de 4.000 tabelas, sendo que já pesquisei e vi que aproximadamente 50 tem o campo LONG RAW…
A cláusula IGNORE ignora os erros da tabela existente e atualiza?
15 de fevereiro de 2011 às 5:12 pm #98253burga
ParticipanteAgora entendi seu problema! Eu pensei que era apenas uma tabela a ser importada, nesse caso, como não é, acredito que você não precisa usar a cláusula TABLE…
A cláusula IGNORE ignora os erros da tabela existente e atualiza?
Exato, basicamente o IGNORE=Y vai ignorar todas as mensagens de erro do import e continuar o processo de importação. Ex.: erro ao criar objetos já existentes, erro ao inserir dados já existentes etc…
Esse processo não atualiza os dados já existentes, por isso existe a necessidade de realizar o delete dos dados antes. Também pode ser necessário desabilitar todas as FK’s antes do import. Outro detalhe, como você está trabalhando com LONGs, lembre de utilizar a cláusula BUFFER com um valor mais alto para o EXP.
Abraços!!
15 de fevereiro de 2011 às 6:21 pm #98254mpvargas
ParticipanteValeu Ricardo…
Como eu quero atualizar somente os dados e preciso ganhar tempo, estava pensando numa forma de só apagar as tabelas que tenham campos LONG…
Com isso eu faria um expdp, nesse caso ele atualizaria todas as tabelas que não existem e daria erro nas outras e a seguir eu montaria um outro script usando o impdp com a opção table_exists_action=truncate e nesse caso ele atualizaria tudo e daria erro nas tabelas com campo LONG.
O que vc achou dá idéia?15 de fevereiro de 2011 às 7:02 pm #98255Sousa04
ParticipantePQ VC NÃO USA TABLE_EXISTS_ACTION = REPLACE
acho q vai dar menos dor de cabeça.15 de fevereiro de 2011 às 10:28 pm #98256mpvargas
ParticipanteBlz Sousa
valeu pela dica…O problema é que como eu queria atualizar somente os dados, eu estava usando o paramentro content=data_only… mas com sua dica eu coloquei TABLE_EXISTS_ACTION=REPLACE exclude=index e deu certo…
Obrigado…
PS.: Burga obrigado tb pela ajuda
15 de fevereiro de 2011 às 11:49 pm #98259mpvargas
ParticipanteAmigos…
Uma última dúvida pra finalizar.O que faz o REPLACE?
Dá um DROP na tabela e depois CREATE TABLE?16 de fevereiro de 2011 às 12:38 am #98260burga
Participante[quote=”mpvargas”:3vyo3x8v]Amigos…
Uma última dúvida pra finalizar.O que faz o REPLACE?
Dá um DROP na tabela e depois CREATE TABLE?[/quote]Isso mesmo, ele dropa a tabela, cria ela novamente e carrega os dados do dump na nova tabela.
-
AutorPosts
- Você deve fazer login para responder a este tópico.