Fórum INSERT NO FIREBIRD ENTRE TABELAS DE DOIS BANCOS #521750

02/06/2015

0

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

Responder

Posts

03/06/2015

Thiago Irrazabal

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.
Responder

Gostei + 0

03/06/2015

Marcos P

NIlson,

Qual versão do Firebird você está usando ?
Responder

Gostei + 0

03/06/2015

Nilson Jr

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
Responder

Gostei + 0

03/06/2015

Nilson Jr

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
Responder

Gostei + 0

03/06/2015

Nilson Jr

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
Responder

Gostei + 0

03/06/2015

Marcos P

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...
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar