- Este tópico contém 20 respostas, 6 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por
Regis Araujo.
-
AutorPosts
-
26 de maio de 2009 às 6:44 pm #86957
Thiago Vilhena
ParticipanteAee bom dia pessoal, Mas uma vez eu vindo aqui pedindo uma maozinha!!
ai eu criei essa tabela aqui
CREATE TABLE “SCOTT”.”TAB_SPED” ( “ID” NUMBER(10) NOT NULL , “FUNCIONARIO” VARCHAR2(50), “EMAIL” VARCHAR2(100), “ENDERECO” VARCHAR2(100), “CEP” NUMBER(20), “CELULAR” NUMBER(20), “DATA_NASCIMENTO” DATE, “ESTADO_CIVIL” VARCHAR2(50), “DATA_ATUAL” DATE, “NOME_MAE” VARCHAR2(30)) STORAGE ( INITIAL 20M)
criei uma sequencia SEQ_sped,
daí eu quero inserir 2 milhoes de linhas nessa tabela pra fazer um teste aqui, os nomes podem ser iguais e talz, a unica coisa que nao pode ser igual é o id que vai a seq_sped!!
qual a melhor maneira e a mais rapida para eu inserir esse 2milhoes de registros???
abração pessoal
26 de maio de 2009 às 6:49 pm #86959Manoel872
ParticipanteCrie um bloco anonimo que execute isso.
DECLARE
i number(15,5):=0;
BEGIN
loop
i:=i+1;
insert……
EXIT WHEN i=2000000;end loop;
END;
26 de maio de 2009 às 6:51 pm #86961Thiago Vilhena
Participantei cara desculpa, mas nao entendi
pode esclarecer melhor?
abração
26 de maio de 2009 às 7:02 pm #86963Rodrigo Mesquita
ParticipanteFaça um loop como o exemplo acima efetuando insert nesta tabela incrementando o Id em cada volta até chegar em 2 milhoes de linhas.
faça um commit aproximadamente a cada 5 mil linhas26 de maio de 2009 às 7:03 pm #86964Thiago Vilhena
Participantebeleza rodrigao,
Tipo se eu rodar esse loop, como que eu vou estipular o commit?abração!!
26 de maio de 2009 às 7:35 pm #86968Thiago Vilhena
Participantepessoal!! acho que sentei a maquina com esse script ahdsuidauidsh
vou esperar um tempo ve oq acontece!! vou almoçar!! xD
26 de maio de 2009 às 8:31 pm #86969Leonardo Litz
ParticipanteFaça como o Rodrigo disse, a cada 5 mil registros faça um commit, desta forma vc liberá memória do servidor.
declare
begin
for dd in 1..2000000 loop
insert ….
if(dd mod 5000 = 0)then
commit;
end if;end loop;
end;
Valeu Leonardo Litz
26 de maio de 2009 às 9:34 pm #86974Rodrigo Mesquita
Participanteé isso mesmo…é só fazer como o exemplo do Litz…se vc fizer sem ir executando o commit será muito dificil concluir o insert.
26 de maio de 2009 às 10:38 pm #86976Thiago Vilhena
ParticipantePo pessoal, eu fiz das 2 maneiras dai meu SQLPLUS trava, vou diminuir um pouco fazer de 2mil em 2mil ve se nao trava
26 de maio de 2009 às 10:54 pm #86977Rodrigo Mesquita
Participanteposta teu código aqui para a gente da uma olhada.
26 de maio de 2009 às 10:56 pm #86978Thiago Vilhena
Participantebeleza pessoal meio que funcionou, só que tipo nao ta inserindo em sequencia tipo 1,2,3,4,5,6,7,
ta inserindo assim óSQL> select id from scott.tab_sped_teste;
ID
———-
2757537
2757538
2757539
2757540
2757541
2757542
2757543
2757544
2757545
2757546
2757547queria que inserise 1, 2, 3, 4, 5, ,6 assim po nao desse jeito
26 de maio de 2009 às 11:11 pm #86979Rodrigo Mesquita
ParticipanteComo vc fez o insert? ele é para ter feito na ordem. De qualquer maneira é só vc ordenar no select.
26 de maio de 2009 às 11:16 pm #86980Thiago Vilhena
Participantemeu insert ta assim
insert into scott.tab_sped_teste2 values(seq_sped2.nextval,’thiago’,’thiago@gmail.com’,’castelinho que
pegou fogo’,21010154,76085996,’10/02/1766′,’enrolado’,’25/05/2009′,’MAME_QUERIDA’);
26 de maio de 2009 às 11:17 pm #86981Thiago Vilhena
ParticipanteDeve ser minha sequence, to vendo aqui se corrijo
26 de maio de 2009 às 11:19 pm #86982Thiago Vilhena
ParticipanteMinha sequencia ta assim!!
CREATE SEQUENCE “SCOTT”.”SEQ_TESTE2″ NOCYCLE ORDER CACHE 20 MAXVALUE 2000000 MINVALUE 1 INCREMENT BY 1 START WITH 1
-
AutorPosts
- Você deve fazer login para responder a este tópico.