15/08/2011

Pegar pelo regiostro e atualizar

Pessoal, foi feito uma tabela de emergência e percebi que essa tabela tem mais de 5 milhões de registros, que eu preciso ayualizar. Essa tabela não possui PK e eu queria atualizar por quantidade X de registros. Eu gostaria de dar um IN para pegar uma faixa de registros que eu gostaria de atualizar. Acontece que eu não tenho nada de sequencial na tabela, execto aquele valor que o SQL SERVER coloca na margem esquerda da lista de registro. Acontece que é um valor interno do SQL SERVER, tanto que ele nem sequer atribui um nome pra ele e ele vai do 1(um) até o Últmo registro, que no meu caso é o: 5.957.853 registros. Aí eu pergunto: Tem como eu fazer uma update pegando do 1 até o 500.000 e depois pegar do 500.001 até o 1.000.000 e depois 1.000.001 até o 1.500.000 e assim por diante? Se houver outra forma de fazer isso, server também. Só gostaria de fazer é que a medida que se vai atualizando se vai comitando. Obrigado.

Respostas

28/08/2011

Samuel Diogo

Olá, não há nada mesmo de que possa ser considerado como sequencial na sua tabela? Nem uma coluna de Data? Ou até mesmo sequencia alfabética?
eu tentei fazer o seguinte:
Crei tabela1, tabela2 ambas com 7 registros e a tabela3 pra receber os resgistros das tb1 e tb2:
insert into Tabela3 select TB2.ID_temp, TB1.nome, TB1.DataNascimento,TB1.CPF from Tabela2 TB2, Tabela1 TB1 go
o problema é que ele dublicou os registro e me retornou 48 registros!!:
veja meu codigo: create table Tabela1( nome varchar(100), DataNascimento Date, CPF Int ) go create table Tabela2(ID_temp int) go
insert into Tabela1 Values('pedro','1970/01/30',1112);go
 insert into Tabela1 Values('jose','1980/10/04',111222333) goinsert into Tabela1 Values('marcos','1940/05/14',111222333)goinsert into Tabela1 Values('sergio','1950/12/31',111222333)goinsert into Tabela1 Values('daniel','1967/10/29',111222333)goinsert into Tabela1 Values('gilson','1948/03/29',111222333)goinsert into Tabela1 Values('andrew','1932/08/16',111222333)go
select * from Tabela1

insert into Tabela2 Values(1);go
 insert into Tabela2 Values(2) goinsert into Tabela2 Values(3)goinsert into Tabela2 Values(4)goinsert into Tabela2 Values(5)goinsert into Tabela2 Values(6)goinsert into Tabela2 Values(7)go create table Tabela3 (ID_temp int, nome varchar(100), DataNascimento Date, CPF Int)
insert into Tabela3 select TB2.ID_temp, TB1.nome, TB1.DataNascimento,TB1.CPF from Tabela2 TB2, Tabela1 TB1 go


acho que se você melhorá-lo pode conseguir o que você está querendo!
Sds,Samuel
Responder Citar