> 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/
--
TIP 4: No hagas 'kill -9' a postmaster
No comments:
Post a Comment