[firebase-br] Insert de multiplas linhas

Kelver Merlotti kmerlotti em gmail.com
Qua Nov 17 09:22:26 -03 2010


Bom dia Alysson!
Realmente, o ideal é montar uma ferramenta que gere o script pra você
com esta técninca, pq se for fazer na mão, realmente dá mais trabalho.
Sobre performance, como comentei anteriormente, nos testes que fizemos
com o insert..into..select..union..select, o tempo caiu de 11 segundos
para 4 segundos, na importação de um mesmo arquivo. Quase três vezes
mais rápido.
Abraços!

Kelver Merlotti
Coordenador Editorial da Active Delphi
Site: http://www.activedelphi.com.br
Contato: kelver em activedelphi.com.br
Twitter: http://www.twitter.com/kmerlotti
Tem um segundo? Então, dá uma olhadinha nisso:
Um site de publicidades, de Portugal, está pagando em euros
(quase 3x mais que em reais) pra quem estiver disposto a:
* Ler anúncios
* Visitar sites
* Clicar em banners
* Navegar na NET
* Ler e-mails
* Convidar novos usuários
O pagamento pode ser feito de várias formas!
Registra lá. Não custa nada!!! ;-)
http://www.publipt.com/pages/index.php?refid=kmerlotti



2010/11/17 Alysson Gonçalves de Azevedo <agalysson em gmail.com>:
> hmmm legal, mas pelo que vi, ele quer popular uma tabela (provavelmente para
> testes) e queria uma forma de reduzir/simplificar o script com os inserts,
> para ter menos "insert into" repetidos...
>
> entao, talvez essa query ai num seja o que ele quer... (apesar de ser mesmo
> interessante ^^)
>
> mas aproveitando o gancho... esse metodo ai, insert+select+union fica mais
> rapido que em inserts comuns?
>
> obrigado
>
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
> (\(''^_^ )/)
>
> "Pobre vive dizendo que não tem nada, mas quando vem a enchente, ele sai
> gritando: -Perdi tudo!!!"
>
>
>
> Em 17 de novembro de 2010 08:42, Kelver Merlotti <kmerlotti em gmail.com>escreveu:
>
>> Dá pra simular com insert into select..unio..select, veja:
>>
>> create table teste(
>>  campo1 integer,
>>  campo2 integer,
>>  campo3 varchar(20)
>> );
>>
>> para importar:
>>
>> insert into teste(campo1, campo2, campo3)
>> select gen_id(gen1, 1), cast('123' as integer), cast('dado 1' as
>> varchar(20) from rdb$database UNION
>> select gen_id(gen1, 1), cast('456' as integer), cast('dado 2' as
>> varchar(20) from rdb$database UNION
>> select gen_id(gen1, 1), cast('789' as integer), cast('dado 3' as
>> varchar(20) from rdb$database UNION
>> select gen_id(gen1, 1), cast('321' as integer), cast('dado 4' as
>> varchar(20) from rdb$database ...
>>
>> E assim vai, lembrando que há um limite de 127 UNIONs por query, logo,
>> tem que se preocupar com esse limite.
>>
>> Em um teste que o amigo Eduardo Rocha fez para escrever um artigo pra
>> Active Delphi, ao importar um txt com 5000 linhas usando um insert
>> para cada linha, levou 11 segundos. O mesmo arquivo sendo dividido em
>> um insert a cada 127 linhas, com esta técnica de
>> insert..into..select..union..select, levou apenas 4 segundos.
>>
>> Vale a pena fazer os testes! ;-)
>>
>> Quem tiver a edição 64 da Revista poderá ver mais detalhes.
>>
>> Abraços!
>>
>> Kelver Merlotti
>> Coordenador Editorial da Active Delphi
>> Site: http://www.activedelphi.com.br
>> Contato: kelver em activedelphi.com.br
>> Twitter: http://www.twitter.com/kmerlotti
>> Tem um segundo? Então, dá uma olhadinha nisso:
>> Um site de publicidades, de Portugal, está pagando em euros
>> (quase 3x mais que em reais) pra quem estiver disposto a:
>> * Ler anúncios
>> * Visitar sites
>> * Clicar em banners
>> * Navegar na NET
>> * Ler e-mails
>> * Convidar novos usuários
>> O pagamento pode ser feito de várias formas!
>> Registra lá. Não custa nada!!! ;-)
>> http://www.publipt.com/pages/index.php?refid=kmerlotti
>>
>>
>>
>> 2010/11/16 Marco Antonio Abreu <mabreu.ti em gmail.com>:
>> > Por curiosidade, alguém sabe se existe previsão para o suporte ao insert
>> de
>> > várias linhas?
>> >
>> > abs
>> > --
>> > Marco Antonio Abreu
>> > mabreu.ti em gmail.com
>> > System Analist/Developer/DBA
>> >
>> >
>> > Em 16 de novembro de 2010 23:38, Eduardo Bahiense <
>> > eduardo em icontroller.com.br> escreveu:
>> >
>> >> Não tem :(
>> >>
>> >>
>> >> Em 16/11/2010 23:28, Marco Antonio Abreu escreveu:
>> >>
>> >>> Olá pessoal.
>> >>>
>> >>> estou precisando popular várias tabelas de um BD Firebird. Tentei fazer
>> um
>> >>> insert de multiplas linhas de uma vez tal como faço em outros BD como
>> >>> MySQL
>> >>> e MS SQL. Algo como o exemplo abaixo.
>> >>>
>> >>> INSERT INTO tab(c1, c2, c3) VALUES (1, 1, 1), (2, 2, 2), (3, 3, 3);
>> >>>
>> >>> Quando tentei executar deu erro. O Firebird não tem suporte a esta
>> >>> sintaxe?
>> >>>
>> >>> abs
>> >>> --
>> >>> Marco Antonio Abreu
>> >>> mabreu.ti em gmail.com
>> >>> System Analist/Developer/DBA
>> >>> ______________________________________________
>> >>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> >>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> >>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> >>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> >>>
>> >>>
>> >>
>> >>
>> >> ______________________________________________
>> >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> >> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> >> http://www.firebase.com.br/fb/artigo.php?id=1107
>> >> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> >>
>> > ______________________________________________
>> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> > Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> >
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista