Re: consulta basica

From: Ernesto Quiñones <ernestoq(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: consulta basica
Date: 2009-11-12 17:55:20
Message-ID: 2ba222580911120955h32d3ea0cx2a1479b1453c101d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Aquí tengo yo un ejemplo de dbilink con Mysql, tendrías que
configurarlo para DB2 (no se si hay driver para eso) :

http://eqsoft.net/blog/index.php?/archives/1333-Instalando-DBI-Link-de-PostgreSQL-para-comunicarse-con-MySql.html

Ten en cuenta que esto hace que el PostgreSQL cada vez que ejecute una
consulta a la tabla remota trae toda la data de la misma a tu
PostgreSQL (aunque uses un where porque primero jala todo y luego
aplica el filtro), y si son millones de datos esto demora mucho, en
ese caso yo jalaría la data de ambas dbs por el lado de la aplicación
y ahí la cruzaría.

saludos

2009/11/12 "Ing. Marcos Orti­z " <mlortiz(at)uci(dot)cu>:
> Moises Silva escribió:
>> Marcos:
>>
>> Lo que requiero es hacer una sentencia SQL que pueda leer mas de una BASE DE DATOS, por ejemplo esto se maneja en DB2 con librerias, algo como:
>>       SELECT * FROM LIBRERIA1/TABLA1 WHERE CAMPO IN (SELECT CAMPO FROM LIBRERIA2/TABLA2 WHERE GESTION = 20099)
>> Donde LIBRERIA1 es BASE DE DATOS 1
>> Donde LIBRERIA2 es BASE DE DATOS 2
>> Como es la sintaxis de BASEDATOS-TABLA en SQL
>> Requiero esto para mantenimiento y verificación de datos de una base de datos que este en funcionamiento y otra data donde restaurar tablas de back up de fechas anteriores.
>>
>> Gracias por tu colaboracion
>>
>> Saludos
>>
>> Moises
>>
>> -----Mensaje original-----
>> De: "Ing. Marcos Orti­z " [mailto:mlortiz(at)uci(dot)cu]
>> Enviado el: Jueves, 12 de Noviembre de 2009 11:27 a.m.
>> Para: Moises Silva
>> CC: pgsql-es-ayuda(at)postgresql(dot)org
>> Asunto: Re: [pgsql-es-ayuda] consulta basica
>>
>>
>> Moises Silva escribió:
>>
>>> Hola lista, tengo la siguiente duda, como se debe hacer una sentencia
>>> SQL para manejar 2 tablas en distintas bases de datos.
>>>
>>> Se agradece los comentarios y opiniones
>>>
>>> Saludos Cordiales
>>>
>>> *Moisés Silva Cárdenas
>>> CADE Informatica
>>> Plaza Venezuela esq. Loayza No 1401
>>> La Paz- Bolivia
>>> ( Telefono: (591-2) 2310390
>>> 2 Fax: (591-2) 2391139*
>>> *e-mail: msilva(at)cadebsa(dot)com*
>>>
>>>
>>>
>> Esto lo puedes hacer con dblink, conectándote directo a la otra base de
>> datos, o montando la tabla remota como si fuera otra tabla de tu base de
>> datos.
>> Aquí te dejo el ejemplo de la documentación oficial. Espero que te sirva
>> de algo.
>>
>> Saludos
>> **************************************************
>>
>> select dblink_connect(’dbname=postgres’);
>>  dblink_connect
>> ----------------
>>  OK
>> (1 row)
>> select dblink_connect(’myconn’, ’dbname=postgres’);
>>  dblink_connect
>> ----------------
>>  OK
>> (1 row)
>> -- FOREIGN DATA WRAPPER functionality
>> -- Note: local connection must require password authentication for this
>> to work properl
>> --       Otherwise, you will receive the following error from
>> dblink_connect():
>> --
>> ----------------------------------------------------------------------
>> --       ERROR: password is required
>> --       DETAIL: Non-superuser cannot connect if the server does not
>> request a passwor
>> --       HINT: Target server’s authentication method must be changed.
>> CREATE USER dblink_regression_test WITH PASSWORD ’secret’;
>> CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;
>> CREATE SERVER fdtest FOREIGN DATA WRAPPER postgresql OPTIONS (hostaddr
>> ’127.0.0.1’, dbn
>> CREATE USER MAPPING FOR dblink_regression_test SERVER fdtest OPTIONS
>> (user ’dblink_regr
>> GRANT USAGE ON FOREIGN SERVER fdtest TO dblink_regression_test;
>> GRANT SELECT ON TABLE foo TO dblink_regression_test;
>> \set ORIGINAL_USER :USER
>> \c - dblink_regression_test
>> SELECT dblink_connect(’myconn’, ’fdtest’);
>>  dblink_connect
>> ----------------
>>                                                                       1899
>>                                                               dblink_connect
>>  OK
>> (1 row)
>> SELECT * FROM dblink(’myconn’,’SELECT * FROM foo’) AS t(a int, b text, c
>> text[]);
>>  a | b |        c
>> ----+---+---------------
>>   0 | a | {a0,b0,c0}
>>   1 | b | {a1,b1,c1}
>>   2 | c | {a2,b2,c2}
>>   3 | d | {a3,b3,c3}
>>   4 | e | {a4,b4,c4}
>>   5 | f | {a5,b5,c5}
>>   6 | g | {a6,b6,c6}
>>   7 | h | {a7,b7,c7}
>>   8 | i | {a8,b8,c8}
>>   9 | j | {a9,b9,c9}
>>  10 | k | {a10,b10,c10}
>> (11 rows)
>> \c - :ORIGINAL_USER
>> REVOKE USAGE ON FOREIGN SERVER fdtest FROM dblink_regression_test;
>> REVOKE SELECT ON TABLE foo FROM dblink_regression_test;
>> DROP USER MAPPING FOR dblink_regression_test SERVER fdtest;
>> DROP USER dblink_regression_test;
>> DROP SERVER fdtest;
>> DROP FOREIGN DATA WRAPPER postgresql;
>>
>>
>>
> Ya te digo, hay una forma con dblink, cargar la tabla o las tablas de tu
> base de datos remota en tu schema como si fuera una local, pero ahora no
> recuerdo dónde puse el ejemplo.
>
> Saludos
>
> --
>
> "For me, the purpose is, at least partly, to have joy. Programmers often
> feel joy when they can concentrate on the creative side of programming,
> so Ruby is designed to make programmers happy."
> Yukihiro Matsumoto (Matz), Creator of the Ruby Language
>
> Ing. Marcos Luís Ortíz Valmaseda
> PostgreSQL SysDBA && Rails Developer
> BI and DWH Apprentice
> Centro de Tecnologías de Almacenamiento y Análisis de Datos (CENTALAD)
> Universidad de las Ciencias Informáticas (http://www.uci.cu)
>
> Linux User # 418229
>
> http://www.postgresql.org
> http://www.postgresql-es.org
> http://www.rubyonrails.org
> http://www.ruby-lang.org/es/
> http://www.planetrubyonrails.org/
> http://www.planetpostgresql.org
>
>
>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
>    (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

--
Inscribete en las listas de APESOL
http://www.apesol.org/listas.php

Visita
http://www.eqsoft.net
Manuales, noticias, foros, etc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Xavier Guerra 2009-11-12 17:56:41 Centralizar informacion de bases de datos
Previous Message Ing. Marcos Orti­z 2009-11-12 16:26:15 Re: consulta basica