Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hiperportal

Alterar dados "em ordem crescente"

Recommended Posts

Bom dia a todos \o/

 

Trabalho com Joomla, instalado em uma máquina virtual e um em uma empresa de hospedagem.

 

Um das tabelas, nomeada como _jos_content, na máquina virtual, atingiu um número muito grande de dados, tinha cerca de 260.000 registros, cada um com uma coluna chamada "id", não sei se ela resetou por ter muitos registros ou acidentalmente, mas agora todos registros que são inseridos voltam desde o id "1", "2", "3", como eles são únicos, preciso alterá-los para poder importar a tabela no banco de dados do outro site (na empresa de hospedagem), como posso alterar todos "id" de uma só vez em forma crescente?

 

Para facilitar o entendimento... uso o comando "update 'jos_content' set 'id'='xx'" para alterar todos os "id" para xx, mas preciso que mudem de forma crescente, começando do 260.001, seguido do 260.002...

 

Obrigado,

 

Wesley Moreira Dias

www.hiperportal.blog.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hipertotal

 

Você pode criar um cursos para isto, crie tamebm um número inteiro que será incrementado a cada passagem pelo seu cursos, crie o looping fazendo o update registro a registro

 

Espero ter ajudado

 

Abs

 

JRIBEIROJR

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma outra forma sem uso de cursores seria:

 

dados para testes:

set nocount on
declare @Tarefas table (Codigo int primary key, nome varchar(10))
insert into @Tarefas (Codigo, nome) values (1, 'A')
insert into @Tarefas (Codigo, nome) values (2, 'B')
insert into @Tarefas (Codigo, nome) values (4, 'D')
insert into @Tarefas (Codigo, nome) values (3, 'C')

verificando os dados a serem alterados:

SELECT (SELECT Count(*) FROM @Tarefas t2 WHERE t.Codigo >= t2.Codigo)+260000 as novo_codigo, * 
FROM @Tarefas t 

retorna:

novo_codigo Codigo      nome
----------- ----------- ----------
260001      1           A
260002      2           B
260003      3           C
260004      4           D

 

efetivando o update

update @Tarefas set Codigo = (SELECT Count(*) FROM @Tarefas t2 WHERE t.Codigo >= t2.Codigo)+260000 from @Tarefas t 

SELECT * from @Tarefas

resultado:

Codigo      nome
----------- ----------
260001      A
260002      B
260003      C
260004      D

 

OBS.: lembre-se nestes casos em que é necessário alterar uma quantidade considerável de registros de uma tabela, é muito importante a realização de um backup antes da operação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado jribeirojr e eriva_br.

 

Gostaria de saber como é que se faz com cursores, assim como vocês mencionaram, pelo que entendi o modo que eriva_br disse, preciso dizer para todos como se fosse de um em um, mas daria muito trabalho, pois por dia são inseridos cerca de 1000 registros.

 

De qualquer forma já estou fazendo backup e assim que testar informo o que aconteceu.

 

Obrigado ^_^

 

Wesley Moreira Dias

www.hiperportal.blog.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de saber como é que se faz com cursores

exemplo de como criar cursores: http://forum.imasters.com.br/topic/224865-transformando-varias-linhas-em-uma-so-coluna/

 

tente se possível evitar cursores, pois eles tem não tem um bom desempenho, veja: http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=24

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos novamente.

 

Ainda não consegui fazer nenhum dos comandos.

 

Coloquei um exemplo no ar, www.hiperportal.blog.br/jos_content.sql.gz. Alguém pode tentar fazer a alteração como estou precisando, e exibir o comando por gentileza?

 

No arquivo, o primeiro registro possuí o ID 1 e o ultimo 2032, preciso que o ID 1 seja 239513 e o ID 2032 seja 241545 (239513+2032). Isso seria alterar todos os ID's de forma crescente.

 

Agradeço a quem puder me ajudar.

 

Wesley Moreira Dias

www.hiperportal.blog.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.