Re: Postgres como linked server en Ms. SQL server 2005

From: Pere Rodríguez <pere(dot)rodriguez(dot)rodriguez(at)gmail(dot)com>
To: "Mauricio Escobar" <mescobar(at)pcofertas(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Postgres como linked server en Ms. SQL server 2005
Date: 2007-03-15 17:04:58
Message-ID: e1b2e97f0703151004h73eb6653j2ecd0af9dc118846@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Mauricio,

gracias, la opción openquery es una solución válida.

2007/3/15, Mauricio Escobar <mescobar(at)pcofertas(dot)cl>:
>
>
> Como recomendación en las consultas vinculadas utiliza openquery para que
> use lo indice de postgres.
>
> un par de ejemplos
>
> /* insert masivo */
> INSERT OPENQUERY(PostgreSQL,'SELECT campo1, campo2 FROM tabla')
> SELECT
> Campo1Sql,
> Campo2Sql
> FROM
> tablaSql
>
> /* SELECT de u registro, ojo con las comillas simple que si no pones 2 corta
> el string */
> DECLARE @numInt AS integer
> SET @numInt = SELECT numero FROM OPENQUERY(PostgreSQL, 'SELECT MAX(campo) as
> numero FROM tabla WHERE tipo = ''S''')
>
>
> Espero sirva la ayuda
>
>
>
> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Gabriel Colina
> Enviado el: Jueves, 15 de Marzo de 2007 08:15
> Para: Pere Rodríguez; pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] Postgres como linked server en Ms. SQL server
> 2005
>
>
> --- Pere Rodríguez
> <pere(dot)rodriguez(dot)rodriguez(at)gmail(dot)com> escribió:
>
> > Hola,
> >
> > por motivos que no vienen al caso necesito acceder a
> > PostgreSQL 8.1.4
> > desde Ms. SQL server 2005.
>
> Mejor rendimiento vas a obtener actualizando a
> postgresql 8.2.3
>
> > A tal propósito he creado un servidor vinculado en
> > el SQL Server para
> > acceder a Postgres. El driver utilizado es OleDb
> > sobre ODBC. Con esta
> > configuración he encontrado dos problemas:
>
> > 1/ Yo utilizo el esquema public y para SQL Server
> > "public" es una
> > palabra reservada.
> Te contesto con mis conocimientos hasta la version
> 2003 por que desde que conoci PostgreSQL, le he dado
> las gracias a SQL Server y lo retire con honores, y
> despues de 8.2.3, ya es un camino sin retorno, admito
> que hay situaciones en las que uno tenga que convivir.
> Y lo voy a instalar solo para poder responderles
> teniendo en cuenta las diferencias que pueda tener
> esta version con la 2003, igual te pido que consultes
> MSDN, ahi hay una estupenda documentacion muy bien
> organizada, para ver si existe hoy otro metodo para
> vincular tablas externas que el que estas usuando.
>
> Pero si el MSDN y lo que te menciono abajo no te
> sirve. Tengo una alternativa muy desprolija pero
> funciona. Me la reservo para otro momento por que si
> no voy a resivir pedradas.
>
> el public en M$Sql es llamado dbo
>
> Esto me impide hacer cualquier
> > consulta ya que sql
> > server pide el esquema. Por ejemplo:
> >
> > select * from linked_server..public.tabla
> >
> > ¿Alguna solución?
> >
>
> Proba select * from linked_server."public"."tabla"
> con comillas simples tambien o "."public.tabla"
>
> > Yo he pensado en crear un nuevo esquema con vistas a
> > las tablas que me
> > interesan.
> Eso a mi me gusta, yo trabajo muy poco en los esquemas
> publicos.
> >
> > 2/ El problema mas grave es que SQL Server, al hacer
> > las consulta,
> > omite la clave "as" para los alias y Postgres no me
> > resuelve la
> > consulta. Por ejemplo, la consulta:
> >
> > select id from linked_server..public1.foo
> >
> > el sql server la traduce a:
> >
> > SELECT "Tbl1002"."id" "Col1004" FROM "public1"."foo"
> > "Tbl1002"
> >
> Y donde esta la clave as que no la estoy viendo en el
> ejemplo que presentas.
>
> > y Postgres, al no existir el "as" para el alias,
> > dispara un error.
> >
> Algo me perdi por que yo uso el "as" en postgresql
>
> > Este es para mi el gran problema. ¿Alguna idea?
> >
> Una alternativa que hasta aqui no habia considerado
> existe en Postgresql, segun se hablo la semana pasada
> no me consustance con el, una contrib o algo que se
> llama dblink o algo asi, por que no vinculas las
> tablas de SQL que te interesan a PostgreSQL y te
> conectas al PostgreSQL para realizar las transacciones
> que te interesan.
> > 3/ También he provado directamente con el driver
> > OleDb de Postgres
> > pero no he conseguido conectarme.
> >
> > Gracias,
> >
> > pere
> >
> > ---------------------------(fin del
> > mensaje)---------------------------
> > TIP 6: ¿Has buscado en los archivos de nuestra lista
> > de correo?
> >
> >
> > http://archives.postgresql.org/pgsql-es-ayuda
> >
>
> En ultima instancia nos queda la forma horrorosa que
> te voy a mencionar mas adelante o en privado para que
> no me tiren piedras desde aqui. jeje
>
> En el campo, en mi pais, dicen que el que se quemo con
> leche, ve la vaca y llora.
>
> Atte.
> Gabriel Colina
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> Regístrate ya - http://correo.espanol.yahoo.com/
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 3: si publicas/lees desde Usenet, por favor envía "subscribe-nomail"
> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> a los suscriptores de la lista
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 8: explain analyze es tu amigo
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Angel . 2007-03-15 17:14:58 Ayuda con Trigger
Previous Message Mario 2007-03-15 17:04:06 Re: Trabajando con Grandes BD