INSERT NO FIREBIRD ENTRE TABELAS DE DOIS BANCOS

Firebird

02/06/2015

Estou precisando copiar os dados de uma tabela firebird de um banco para outra tabela com o mesmo nome e estrutura de outro banco, e não queria fazer um sistema para isto, e por tem campo imagem nao posso exportar para excel, ou txt para importar

Então criei uma procedure para importar os dados entre duas tabelas idênticas de bancos de dados diferentes, porem nao da erro mas nao copia


create or alter procedure INSERT_FOTOS_EXT (
CINI integer,
CFIM integer)
as
declare variable VCF integer;
declare variable SQLFOTO varchar(1000);
BEGIN

execute statement ('insert INTO fotos_pro values (SELECT * FROM FOTOS_PRO WHERE BETWEEN CODIGO '||:cini||' AND '||:cfim)

ON external DATA SOURCE ' 192.168.1.100:C:\DADOS\PATRIFOTOSPMJMSA.FDB'
AS USER 'SYSDBA' PASSWORD 'masterkey' ;



END

agradeço antecipadamente todos pela atenção

SDS
Nilson Jr

Nilson Jr

Curtidas 0

Respostas

Thiago Irrazabal

Thiago Irrazabal

02/06/2015

Bom dia, pelo que vi da tua procedure tem muita coisa estranha aí, começando pelo "WHERE BETWEEN", em qual versão do firebird aceita isso?
Outra coisa tu está dando insert no outro banco e não no que está a procedure, para tu fazer insert no teu banco, tu antes precisaria declarar todas variáveis da tabela, dai fazer um select no banco externo e então fazer um insert no teu banco, qualquer dúvida manda mensagem. Abraço



Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Marcos P

Marcos P

02/06/2015

NIlson,

Qual versão do Firebird você está usando ?
GOSTEI 0
Nilson Jr

Nilson Jr

02/06/2015

Estou usando a versão 2.5, quanto ao BETWEEN escrevi na ordem errada o certo seria

(SELECT * FROM FOTOS_PRO WHERE CODIGO BETWEEN '||:cini||' AND '||:cfim), mas também nao funcionou..

Consegui pelo Ibexpert com o seguinte comando:


insert INTO [PATRIFOTOSPMJM_FOTOS_JERONIMO].fotos_pro select * from FOTOS_PRO

Quanto a procedure usando um banco externo fica ainda sem solução.


SDS
GOSTEI 0
Nilson Jr

Nilson Jr

02/06/2015

Estou usando a versão 2.5, quanto ao BETWEEN escrevi na ordem errada o certo seria

(SELECT * FROM FOTOS_PRO WHERE CODIGO BETWEEN '||:cini||' AND '||:cfim), mas também nao funcionou..

Consegui pelo Ibexpert com o seguinte comando:


insert INTO [PATRIFOTOSPMJM_FOTOS_JERONIMO].fotos_pro select * from FOTOS_PRO

Quanto a procedure usando um banco externo fica ainda sem solução.


SDS
GOSTEI 0
Nilson Jr

Nilson Jr

02/06/2015

Estou usando a versão 2.5, quanto ao BETWEEN escrevi na ordem errada o certo seria

(SELECT * FROM FOTOS_PRO WHERE CODIGO BETWEEN '||:cini||' AND '||:cfim), mas também nao funcionou..

Consegui pelo Ibexpert com o seguinte comando:


insert INTO [PATRIFOTOSPMJM_FOTOS_JERONIMO].fotos_pro select * from FOTOS_PRO

Quanto a procedure usando um banco externo fica ainda sem solução.


SDS
GOSTEI 0
Marcos P

Marcos P

02/06/2015

A partir da versão 2.5 é possível executar o acesso a outros bancos, através da cláusula "ON EXTERNAL" do comando "EXECUTE STATEMENT".

Execute Statement

Can I do multi-database or cross-database queries with Firebird?

Antes, contudo, de colocar isso em uma procedure, seria bom resolver isso via linha de comando...
GOSTEI 0
POSTAR