[firebase-br] GPRE
euler sig
euler em siginformatica.com.br
Seg Maio 16 09:02:16 -03 2005
Olá a todos.
Estou desenvolvendo um programa que utiliza acesso direto às API´s
IB/Firebird. Inicialmente tenho efetuado testes utilizando um pequeno
programa em C, que posteriormente é processado pelo GPRE (utilitário que
acompanha o IB/Firebird) - A listagem está abaixo.
O problema é o seguinte: tenho dois bancos com a mesma estrutura e
tabelas. Um contém tabelas "populadas" e o outro totalmente vazio.
Preciso incluir as linhas das tabelas de um para o outro, mas não quero
utilizar FETCH porque é muito lento.
Utilizando INSERT INTO... SELECT é muito + rápido. Este exemplo pode ser
executado em Win ou Linux. A linha de comando é a seguinte:
gpre test.e -c -manual -no_lines -either_case -user sysdba -password
masterkey
Obtenho o seguinte erro:
Inconsistent database specifier
Se eu utilizar FETCH, incluindo linha a linha funciona. Mas o desempenho
é muito baixo.
Abaixo o cod. fonte (TEST.E) que é processado pelo GPRE, devendo gerar o
arquivo TEST.C:
#include <ibase.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] ) {
EXEC SQL SET DATABASE db1 = "test.fdb";
EXEC SQL SET DATABASE db2 = "test2.fdb";
EXEC SQL CONNECT ALL USER 'SYSDBA' PASSWORD 'masterkey';
EXEC SQL SET TRANSACTION;
/* aqui ocorre o problema */
EXEC SQL INSERT INTO db2.TEST SELECT * FROM db1.TEST;
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
return( 0 );
}
Se alguém tiver alguma dica !
Euler Jr.
Mais detalhes sobre a lista de discussão lista