Здравствуйте.
Недавно заинтересовался написанием скриптов на pgScript.
Все что удалось найти из мануалов - вот это http://www.pgadmin.org/docs/dev/pgscript.html#function2
Мануал доступный, но, как мне кажется, тонковат. Надо бы больше информации с примерами. А где ее взять?
Порыл в сети, ничего толкового не нашел. Тем более на русском языке. В связи с этим начал сам экспериментировать и потихоньку писать некое подобие мануала (pgScript. Написание простых скриптов. Первый опыт. ). Это только начало. Хочу написать еще глубже и подробнее. Может кто-нить может указать место, или скинуть если есть инфу по pgScript. Чем больше тем лучше.
Заранее спасибо.
С Уважением, drmiller.
Про pgScript не скажу, но
Про pgScript не скажу, но есть встречный вопрос - в чём удобство? Мельком глянул по ссылке - очень напоминает PL/pgSQL, а в чём разница и в чём преимущество?
Удобство в том что на pgplsql
Удобство в том что на pgplsql невозможно написать полноценный скрипт, а
pgScript позволяет писать и выполнять целые алгоритмы с использованием операторов ветвления, циклов, SQL-операторов не создавая при этом в базе никаких объектов типа хранимых процедур и т.д.
Ну зачем нам, скажем, писать хранимку чтобы, например, протестировать действие другой хранимки, или ряда хранимок если они являются звеньями одной логической цепочки?
Например есть у Вас некая хранимка, или ряд хранимок которые взаимодействуют между собой. на pgScript можно их протестить создавая генераторы данных различных типов. + если у вас есть скрипты создания таблиц, вьюх, и прочих структурных едениц БД - можно наваять шаблон скрипта который будет проверять наличие объекта в бд, и если его нет - выполнять скрипт создания. Такой механизм можно автоматизировать. И далее боту просто указывать папку с *.sql файлами из которых он соберет единый pgScript и выполнит его. (такие проги облегчают жизнь в разы. личный опыт).
Вобщем полезная штука, как любой скриптовый язык. Вот только инфы по нему мало
А разница в том что это
А разница в том что это совсем разные вещи. По синтаксису, по назначению, по способам применения.
да и... я еще до этого не
да и... я еще до этого не добрался, но при беглом просмотре возможностей могу сказать что pgScript умеет работать с файлами - это круто. ИМХО.
pgperl. pgtcl тоже умеют
pgperl. pgtcl тоже умеют работать с файлами. В общем чую без подробностей прелестей этого дела не понять. В общем будет желание/возможности, можете сюда кинуть какую-либо обзорную статейку, чтобы мы "прониклись"
Помниться в начале постановка
Помниться в начале постановка вопроса была акцентирована на сравнение с plpgsql. Если инициировать сравнение со всем иструментарием постгреса, который служит для наращивания функционала, то можно начать сразу с функций на си... который с лихвой покроет все возможности pgScript, кроме одной... Чтобы решить задачу, используя pgScript, нет необходимости как-либо изменять структуру БД и что либо создавать . Достаточно лишь написать скрипт и выполнить его.
Да, можно аналогично в sql-editor-e написать ряд sql-команд, разделяя их ";" и выполнить их, но дальше SQL-команд мы не уйдем, т.к. его возможности в написании скриптов малы (прощайте ветвления, циклы, передача значений через переменные и прочие прелести )
Как я понял, мануалами мне тут не помогут?
> Как я понял, мануалами мне
> Как я понял, мануалами мне тут не помогут?
Вряд ли, потому что вы похоже единственный, кто имеет компетенцию в pgScripts среди нашей аудитории. Впору вам нам помогать
> а, можно аналогично в sql-editor-e написать ряд sql-команд, разделяя их ";" и выполнить их, но дальше SQL-команд мы не уйдем, т.к. его возможности в написании скриптов малы (прощайте ветвления, циклы, передача значений через переменные и прочие прелести )
В PL/pgSQL есть и ветвления и циклы и передача значений через переменные. Вот работа с внешними вещами отсуствтует - да. Зато PL/pgSQL поставляется в стандартной поставке, а pgScript надо ставить в дополнение. Нет, я нисколько не против pgScript, просто смотря для каких задач. Во многих случаях можно обойтись PL/pgSQL
Ок, как только наберу
Ок, как только наберу сколько-нибудь достаточно описание - скину ссылки.
> В PL/pgSQL есть и ветвления и циклы и передача значений через переменные.
Несомненно есть, но только внутри контекста ХП (речь идет не о case, а о if, for, while и пр.). или вне ХП тоже есть возможность? Если есть то хотелось бы простенький примерчик для расширения кругозора так сказать .
а pgScript - это просто скриптовый язык со своими плюсами и минусами. В общем буду собирать инфу.
> Несомненно есть, но только
> Несомненно есть, но только внутри контекста ХП
Ну разумеется, это же ПРОЦЕДУРНЫЙ язык Поэтому его основное предназначение - это написание хранимых процедур.
> pgScript - это просто скриптовый язык со своими плюсами и минусами.
Тогда нечно похожее на него пожалуй будет pgTcl. Тоже скриптовый язык - фактически это просто Tcl, который расширен клиентскими делами PostgreSQL. Проекту уже много лет.
> Ок, как только наберу сколько-нибудь достаточно описание - скину ссылки.
Будем ждать! А вам успехов в освоении.
Наваял новую
Наваял новую статейку:
http://drmiller-developer.blogspot.com/2012/03/pgscript-record.html