Array
(
)

Pegar pelo regiostro e atualizar

Pjava
   - 15 ago 2011

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.

Samuel Diogo
   - 28 ago 2011

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