Thread: соединение между СУБД
Приветствую! Подскажите пожалуйста, возможно ли соединение между двумя разными физическими серверами? т.е. например, в базе данных создается алиас, который ссылается на таблицу/вид в другой базе на другом (физическом) сервере. Такое возможно? -- У каждого в башке свои тараканы...
FAQ читал? Вопрос 4.18 http://www.linuxshare.ru/postgresql/FAQ_russian.html > Приветствую! > > Подскажите пожалуйста, возможно ли соединение между двумя разными > физическими серверами? > > т.е. например, в базе данных создается алиас, который ссылается на > таблицу/вид в другой базе на другом (физическом) сервере. > > Такое возможно? > -- С уважением, Виктор
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 -- У каждого в башке свои тараканы...
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? -- У каждого в башке свои тараканы...
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--
Oleg Bartunov wrote: >> Не знаете, что я делаю не так? > > > Доллар-квоттинг появился в 8-ке ! У тебя что стоит ? сейчас 7.4.7, хотя планирую перетаскиваться именно на 8-ку /me бьёт себя пяткой в грудь от злости: документация, на которую я приводил ссылку и из которой я цитировал пример была именно по 8-ке, просто пункт носил номер 7.2, поэтому видимо и решил что документация по 7.2 $) -- У каждого в башке свои тараканы...
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--
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)
В Втр, 05/04/2005 в 16:35 +0400, Genix пишет: > а как же быть с многострочным кодом на SQL? Вот так: CREATE FUNCTION foo() AS ' DECLARE whatever int; BEGIN ... CODE ... END '; все просто :) Маркус -- Markus Bertheau <twanger@bluetwanger.de>
Attachment
Nick Gazaloff wrote: > Откуда известно, что FAQ пр 7.2? Тут есть табличная функция (7.3, > по-моему) и HERE-DOC quoting (8.0). В более ранних работать не будет. ну ошибся, с кем не бывает ;) просто заголовок страницы звучит так: PostgreSQL: 7.2. Table....., вот и подумал сначала что документ именно по 7.2 -- У каждого в башке свои тараканы...
Viktor Vislobokov wrote: >> Подскажите пожалуйста, возможно ли соединение между двумя разными >> физическими серверами? >> >> т.е. например, в базе данных создается алиас, который ссылается на >> таблицу/вид в другой базе на другом (физическом) сервере. >> >> Такое возможно? > FAQ читал? > Вопрос 4.18 > http://www.linuxshare.ru/postgresql/FAQ_russian.html я опять вернусь к этой теме. подскажите, а чтобы сделать выборку из базы лежащей на том же сервере тоже нужно использовать dblink, или можно обойтись штатными средствами? что-то я пока не нашел как. заранее спасибо -- У каждого в башке свои тараканы...
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
Oleg Bartunov wrote: > Не существует способа создать запрос к базам данных отличным от текущей. спасибо, что открыли мне глаза. в первом чтении я не обратил на это внимания! -- У каждого в башке свои тараканы...