RE: Duda sql bases de datos

From: Laura reiva <lauraleyton(at)hotmail(dot)es>
To: Marco Antonio Frias Butron <marcoantoniofrias(at)gmail(dot)com>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Duda sql bases de datos
Date: 2008-06-04 10:32:01
Message-ID: BLU134-W183FE594645B639F0984CED6B50@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, gracias a todos por vuestras respuestas.
He instalado el paquete dblink sobre la base de datos en la que quiero escribir, 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. Ando perdidísima, creo que se nota.

En caso de realizarlo usando una función, como me ha recomendado Marco Antonio, no sé como insertarla en mi código Java o bien, si tenerla en un archivo de texto aparte y llamarla para ejecutar desde Java.

Por favor, necesito vuestra ayuda que no consigo avanzar nada. Muchas gracias. Un saludo enorme a todos.

> Date: Wed, 28 May 2008 12:40:25 -0400> From: marcoantoniofrias(at)gmail(dot)com> To: lauraleyton(at)hotmail(dot)es> Subject: Re: FW: [pgsql-es-ayuda] Duda sql bases de datos> CC: pgsql-es-ayuda(at)postgresql(dot)org> > 2008/5/28 Laura reiva <lauraleyton(at)hotmail(dot)es>:> > Hola,> > La base de datos original no la puedo aumentar más pues ya contiene> > alrededor de cien tablas y debo realizar ésta "copia" con varias de ellas,> > por lo que crear una nueva tabla en la base de datos original para cada una> > de ellas sería muy complejo. Tendré que usar dblink, aunque no lo conozco.> > Tengo instalado postgreSQL 8.1. ¿Podría explicarme cómo funciona el producto> > dblink?> > 1ro. instalar dblink en la base de datos 1:> > $psql -d db1 -U usuario -f /direccion/al/archivo/dblink.sql> > 2do. creas una función con un contenido parecido a este:> > CREATE OR REPLACE FUNCTION dblink_db1_db2() RETURNS VOID AS $$> DECLARE> fila RECORD;> BEGIN> > -- inicias la conexion> SELECT dblink_connect('dbname=db2 user=usuario password=contrasena');> > -- obtienes los registros de la db1 (conexion actual) [puedes hacer> con cursores también]> FOR fila IN SELECT * FROM tablaAlumnos_db1 WHERE sexo = 'M' LOOP> -- insertas en la db2. fila: es la estructura que obtiene de cada> fila de la tabla> -- campo1,campo2,etc: son los atributos de la tabla de la 2da base.> SELECT dblink_exec('INSERT INTO tablaAlumnos_db2 VALUES(' ||> fila.campo1 || ',' || fila.campo2 || ');');> END LOOP;> > -- cierras la conexion> SELECT dblink_disconnect();> > END;> $$ LANGUAGE plpgsql;> > 3ro. ejecutas la función:> > SELECT dblink_db1_db2();> > Dale una leída a los archivos dentro de contrib/dblink/doc del código fuente.> > -- > Saludos y abrazos...> > Marco Antonio Frias Butrón> Slackware Linux User> Linux Registered User #356229 - http://counter.li.org/
_________________________________________________________________
Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para estar siempre a la última
Guapos y guapas, clips musicales y estrenos de cine.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raúl Andrés Duque Murillo 2008-06-04 12:20:34 Re: Configurar el log de postgres
Previous Message Raúl Andrés Duque Murillo 2008-06-04 09:19:10 Re: Subir servidor en DEBIAN