2013-04-16 3 views
13

私はPostgreSQLを初めて使用しています。私はpgAdminツールを使って実行できるpgScriptの必要性を理解できませんでした。それはいつ使われるべきですか? plpgSQLができないことは何ができますか? Microsoft SQL Serverのそれに相当するものは何ですか?PostgresSQLのpgScriptの目的は何ですか?

+4

'pgScript'はPostgreSQLではなく' PgAdmin-III'の機能ですが、本当に少し不幸です。 'pgAdminScript'にする必要があります。私はそれが実際に使われているのを見たことはありませんが、私は人々がそれを使用すると確信しています。私はいつもPL/PgSQLを使って普通の 'psql'で、' psycopg2'(Python)や 'DBI'や' DBD :: Pg'(Perl)を使ってPostgreSQLと対話するPythonやPerlスクリプトを使って作業しています –

+0

"Execute pgScript"のように、トランザクションの一部として文を実行するのを避けます。データベースの束などを削除するときに役立ちます。 – beldaz

答えて

10

pgScriptはクライアント側のスクリプト言語ですが、pl/PgSQLはサーバ上で動作します。つまり、彼らはまったく異なるユースケースを持っています。たとえば、PgScriptではトランザクションの状態を管理できますが、pl/PgSQLでは実行できませんが、pl/PgsqlはSQLの言語を拡張するために使用できます。

さらに、2つはクエリプランから動的SQLに至るまでに非常に異なる多くの処理を行い、pgScriptはクエリ間の往復を必要とすることを意味します。

-1

Toad Data ModelerのDDLスクリプトジェネレータを使用しました。

私のはpgAdmin-IIIで通常クエリの実行を使用してスクリプトを実行しましたが、それは私にエラーを与え続け:
"ERROR:リレーション "ユーザー" は既にSQL状態が存在する:42P07"

実行しましたPgAdmin-IIIでpgScriptを実行しても正常に動作しました。

2

pgScriptの1つの用途は、変数を定義して後でSQLで使用することです。

はたとえば、あなたはこのような何かを行うことができます:

declare @mytbl, @maxid; 
set @mytbl = 'sometable'; 
set @maxid = 2500; 
set @res = select count(*) from @mytbl where id <= @maxid; 
print @res; 

このアプローチは、ちょうどあなたがそれらが複雑なSQLクエリの奥深くに埋もればかりではなく、スクリプトの先頭に変更したいすべての変数を持つことです。

もちろん、pgScriptは、彼のコメントで言及された@ {Craig Ringer}のようなPgAdmin IIIクライアント内でしか利用できない機能です。

関連する問題