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

From: "Mauricio Escobar" <mescobar(at)pcofertas(dot)cl>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Postgres como linked server en Ms. SQL server 2005
Date: 2007-03-15 15:36:21
Message-ID: 20070315153427.29BC914C8B3@mail.pcofertas.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-03-15 15:38:54 Re: Acerca del espacio reservado para una columna (atributo)
Previous Message Alvaro Herrera 2007-03-15 15:34:26 Re: whit oids