[firebase-br] Insert de multiplas linhas

Kelver Merlotti kmerlotti em gmail.com
Qua Nov 17 08:42:48 -03 2010


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
>




Mais detalhes sobre a lista de discussão lista