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