Thread: соединение между СУБД

соединение между СУБД

From
Genix
Date:
Приветствую!

Подскажите пожалуйста, возможно ли соединение между двумя разными
физическими серверами?

т.е. например, в базе данных создается алиас, который ссылается на
таблицу/вид в другой базе на другом (физическом) сервере.

Такое возможно?

--
У каждого в башке свои тараканы...

Re: соединение

From
"Viktor Vislobokov"
Date:
FAQ читал?
Вопрос 4.18
http://www.linuxshare.ru/postgresql/FAQ_russian.html

> Приветствую!
>
> Подскажите пожалуйста, возможно ли соединение между двумя разными
> физическими серверами?
>
> т.е. например, в базе данных создается алиас, который ссылается на
> таблицу/вид в другой базе на другом (физическом) сервере.
>
> Такое возможно?
>


--
С уважением, Виктор



Re: соединение

From
Genix
Date:
Viktor Vislobokov wrote:
> FAQ читал?
> Вопрос 4.18
> http://www.linuxshare.ru/postgresql/FAQ_russian.html

нашел тут в интернете FAQ по PostgreSQL 7.2, там меня заинтересовал один
вопрос, который я очень долго искал как реализовать в Informix'е:

CREATE TABLE foo (fooid int, foosubid int, fooname text);
CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ SELECT * FROM foo
WHERE fooid = $1;$$ LANGUAGE SQL;
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM foo WHERE foosubid IN (select foosubid from
getfoo(foo.fooid) z where z.fooid = foo.fooid);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;

пытаюсь выполнить этот  запрос, ругается на
"ERROR:  syntax error at or near "$" at character 225"
т.е. на первый $$.

Не знаете, что я делаю не так?

http://phpclub.ru/postgresql/doc/queries-table-expressions.html

--
У каждого в башке свои тараканы...

Re: соединение

From
Genix
Date:
Genix wrote:

> CREATE TABLE foo (fooid int, foosubid int, fooname text);
> CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ SELECT * FROM foo
> WHERE fooid = $1;$$ LANGUAGE SQL;
> SELECT * FROM getfoo(1) AS t1;
> SELECT * FROM foo WHERE foosubid IN (select foosubid from
> getfoo(foo.fooid) z where z.fooid = foo.fooid);
> CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
> SELECT * FROM vw_getfoo;
>
> пытаюсь выполнить этот  запрос, ругается на
> "ERROR:  syntax error at or near "$" at character 225"
> т.е. на первый $$.
>
> Не знаете, что я делаю не так?

оказалось надо вместо $$ писать 'select ... '
а как же быть с многострочным кодом на SQL?

--
У каждого в башке свои тараканы...

Re: соединение

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-1489380298-1112704591=:15865
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 5 Apr 2005, Genix wrote:

> Viktor Vislobokov wrote:
>> FAQ читал?
>> Вопрос 4.18
>> http://www.linuxshare.ru/postgresql/FAQ_russian.html
>
> нашел тут в интернете FAQ по PostgreSQL 7.2, там меня заинтересовал один
> вопрос, который я очень долго искал как реализовать в Informix'е:
>
> CREATE TABLE foo (fooid int, foosubid int, fooname text);
> CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ SELECT * FROM foo WHERE
> fooid = $1;$$ LANGUAGE SQL;
> SELECT * FROM getfoo(1) AS t1;
> SELECT * FROM foo WHERE foosubid IN (select foosubid from getfoo(foo.fooid) z
> where z.fooid = foo.fooid);
> CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
> SELECT * FROM vw_getfoo;
>
> пытаюсь выполнить этот  запрос, ругается на
> "ERROR:  syntax error at or near "$" at character 225"
> т.е. на первый $$.
>
> Не знаете, что я делаю не так?

Доллар-квоттинг появился в 8-ке ! У тебя что стоит ?
Вот у меня:
aa=# CREATE TABLE foo (fooid int, foosubid int, fooname text);
CREATE TABLE
aa=# CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ SELECT * FROM foo WHERE fooid = $1;$$ LANGUAGE SQL;
CREATE FUNCTION
aa=# SELECT * FROM getfoo(1) AS t1;
  fooid | foosubid | fooname
-------+----------+---------
(0 rows)

aa=# SELECT * FROM foo WHERE foosubid IN (select foosubid from getfoo(foo.fooid) z where z.fooid = foo.fooid);
  fooid | foosubid | fooname
-------+----------+---------
(0 rows)

aa=# CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW
aa=# SELECT * FROM vw_getfoo;
  fooid | foosubid | fooname
-------+----------+---------
(0 rows)


>
> http://phpclub.ru/postgresql/doc/queries-table-expressions.html
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1489380298-1112704591=:15865--

Re: соединение

From
Genix
Date:
Oleg Bartunov wrote:

>> Не знаете, что я делаю не так?
>
>
> Доллар-квоттинг появился в 8-ке ! У тебя что стоит ?

сейчас 7.4.7, хотя планирую перетаскиваться именно на 8-ку

/me бьёт себя пяткой в грудь от злости: документация, на которую я
приводил ссылку и из которой я цитировал пример была именно по 8-ке,
просто пункт носил номер 7.2, поэтому видимо и решил что документация по
7.2 $)

--
У каждого в башке свои тараканы...

Re: соединение

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-2008730550-1112707850=:15865
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

Кстати, у меня есть место для моих заметок по pgsql
http://www.sai.msu.su/~megera/oddmuse/index.cgi/pgsql_tutorial_ru
Может чего и пригодится.
Пока не понимаю во что это должно превратиться :)

Олег

On Tue, 5 Apr 2005, Genix wrote:

> Oleg Bartunov wrote:
>
>>> Не знаете, что я делаю не так?
>>
>>
>> Доллар-квоттинг появился в 8-ке ! У тебя что стоит ?
>
> сейчас 7.4.7, хотя планирую перетаскиваться именно на 8-ку
>
> /me бьёт себя пяткой в грудь от злости: документация, на которую я приводил
> ссылку и из которой я цитировал пример была именно по 8-ке, просто пункт
> носил номер 7.2, поэтому видимо и решил что документация по 7.2 $)
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-2008730550-1112707850=:15865--

Re: соединение

From
Nick Gazaloff
Date:
Genix wrote:
> Viktor Vislobokov wrote:
>
>> FAQ читал?
>> Вопрос 4.18
>> http://www.linuxshare.ru/postgresql/FAQ_russian.html
>
>
> нашел тут в интернете FAQ по PostgreSQL 7.2, там меня заинтересовал один
> вопрос, который я очень долго искал как реализовать в Informix'е:
>
> CREATE TABLE foo (fooid int, foosubid int, fooname text);
> CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ SELECT * FROM foo
> WHERE fooid = $1;$$ LANGUAGE SQL;
> SELECT * FROM getfoo(1) AS t1;
> SELECT * FROM foo WHERE foosubid IN (select foosubid from
> getfoo(foo.fooid) z where z.fooid = foo.fooid);
> CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
> SELECT * FROM vw_getfoo;
>
> пытаюсь выполнить этот  запрос, ругается на
> "ERROR:  syntax error at or near "$" at character 225"
> т.е. на первый $$.
>
> Не знаете, что я делаю не так?

Откуда известно, что FAQ пр 7.2? Тут есть табличная функция (7.3,
по-моему) и HERE-DOC quoting (8.0). В более ранних работать не будет.


--

С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)


Re: соединение

From
Markus Bertheau
Date:
В Втр, 05/04/2005 в 16:35 +0400, Genix пишет:

> а как же быть с многострочным кодом на SQL?

Вот так:

CREATE FUNCTION foo() AS '
DECLARE
    whatever int;
BEGIN
    ... CODE ...
END
';

все просто :)

Маркус

-- 
Markus Bertheau <twanger@bluetwanger.de>

Attachment

Re: соединение

From
Genix
Date:
Nick Gazaloff wrote:

> Откуда известно, что FAQ пр 7.2? Тут есть табличная функция (7.3,
> по-моему) и HERE-DOC quoting (8.0). В более ранних работать не будет.

ну ошибся, с кем не бывает ;)
просто заголовок страницы звучит так: PostgreSQL: 7.2. Table....., вот и
подумал сначала что документ именно по 7.2

--
У каждого в башке свои тараканы...

Re: соединение

From
Genix
Date:
Viktor Vislobokov wrote:

 >> Подскажите пожалуйста, возможно ли соединение между двумя разными
 >> физическими серверами?
 >>
 >> т.е. например, в базе данных создается алиас, который ссылается на
 >> таблицу/вид в другой базе на другом (физическом) сервере.
 >>
 >> Такое возможно?

> FAQ читал?
> Вопрос 4.18
> http://www.linuxshare.ru/postgresql/FAQ_russian.html

я опять вернусь к этой теме.
подскажите, а чтобы сделать выборку из базы лежащей на том же сервере
тоже нужно использовать dblink, или можно обойтись штатными средствами?
что-то я пока не нашел как.

заранее спасибо



--
У каждого в башке свои тараканы...

Re: соединение

From
Oleg Bartunov
Date:
On Fri, 14 Oct 2005, Genix wrote:

> Viktor Vislobokov wrote:
>
>>> Подскажите пожалуйста, возможно ли соединение между двумя разными
>>> физическими серверами?
>>>
>>> т.е. например, в базе данных создается алиас, который ссылается на
>>> таблицу/вид в другой базе на другом (физическом) сервере.
>>>
>>> Такое возможно?
>
>> FAQ читал?
>> Вопрос 4.18
>> http://www.linuxshare.ru/postgresql/FAQ_russian.html
>
> я опять вернусь к этой теме.
> подскажите, а чтобы сделать выборку из базы лежащей на том же сервере тоже
> нужно использовать dblink, или можно обойтись штатными средствами? что-то я
> пока не нашел как.

какой ты доставучий :)

Hаписано ведь

4.17) Как выполнять запросы, использующие несколько баз данных?

Не существует способа создать запрос к базам данных отличным от текущей.
Поскольку PostgreSQL загружает системные каталоги специфичные для базы данных,
непонятно даже, как должен себя вести такой межбазовый запрос.
contrib/dblink позволяет запросы между базами, используя вызовы функций.
Разумеется, клиент может одновременно также устанавливать соедиенения с
различными базами данных и таких образом объединять информацию из них.

Я тебе рекомендую использовать схемы и не париться. Они практически ничем
не отличаются от базы.

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

Re: соединение

From
Genix
Date:
Oleg Bartunov wrote:

> Не существует способа создать запрос к базам данных отличным от текущей.

спасибо, что открыли мне глаза.
в первом чтении я не обратил на это внимания!

--
У каждого в башке свои тараканы...