Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/06/2008, 04:55
ferola
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Desde java, dblink con 2 bases de datos

Tengo dos bases de datos en postgreSQL y quiero copiar de la primera de ellas algunos datos de una tabla, a otra tabla de la segunda base de datos.
sobre la primera BD (BD1) UNICAMENTE leeré, nunca modificaré, y sobre la segunda base de datos (llamémosla BD2) insertaré aquellos datos de la tabla de BD1 que cumplan ciertos requisitos. Ambas tablas son de idéntica estructura.

He instalado el paquete dblink sobre la base de datos en la que quiero escribir, es decir, BD2, pues desde ella accederé a la base de datos de lectura.
Todo ésto debo ejecutarlo desde mi programa Java, integrándolo en el código o bien desde un archivo externo que ejecute en el postgreSQL desde pgAdmin.

Instalando el paquete dblink, la conexión y la sentencia me queda de la siguiente forma:

SELECT dblink_connect('link_volcarDatos','host=localhost port=5432 dbname=BD1 user=postgres password=1111);

//BD1, es la base de datos de lectura.
//BD2, es la base de datos de escritura.
//miTabla_deBD2 es el nombre de la tabla de la BD2, sobre la que escribir
//tablaGlobal_deBD1 es el nombre de la tabla de BD1, sobre la que leer los datos

Select * from dblink('link_volcarDatos', 'INSERT INTO miTabla_deBD2 SELECT * FROM tablaGlobal_deBD1 WHERE cod='001' )
AS reg_resultado();

SELECT dblink_disconnect('link_volcarDatos');

No sé si ésto está bien realizado, y en caso de que si lo esté pues no sé como ejecutarlo desde Java. Mis consultas SQL siempre las hice creando Conenction, Statement, etc. Y en éste caso, no sé si debo realizarlo usando el Statement sobre la BD de lectura o de Escritura, o ninguna.

Espero vuestra ayuda, muchas gracias de antemano.

Saludos.