Query Tool#

クエリツールは、任意のSQLコマンドを実行し、結果セットを確認できる強力な機能が豊富な環境です。クエリツールには、 ツール メニューの クエリツール メニューオプションを介して、またはオブジェクトエクスプローラーコントロールの選択したノードのコンテキストメニューからアクセスできます。クエリツールを使用すると、次のことができます。

  • アドホックSQLクエリーを発行します。

  • 任意のSQLコマンドを実行します。

  • SELECTクエリーの結果セットが updatable の場合、編集します。

  • ユーザーの構成に従って、現在の接続とトランザクションのステータスを表示します。

  • 出力パネルに表示されているデータをCSVファイルに保存します。

  • テキスト、グラフィカル形式、またはテーブル形式<a href="https://explain.depesz.com">https://explain.depesz.com</a>と同様に、 SQLステートメントの実行プランを確認します。

  • SQLステートメントに関する分析情報を表示します。

クエリツールウィンドウ

クエリツールの複数のコピーを個々のタブで同時に開くことができます。 クエリツールのコピーを閉じるには、タブの X をクリックします。

クエリツールには、2つのパネルがあります。

  • 上のパネルには、 * SQL Editor* が表示されます。パネルを使用して、クエリまたはスクリプトを入力、編集、または実行できます。また、セッションで実行されたクエリを表示するために使用できる 履歴 タブ、および編集中にテキストスニペットを保持するために使用できる スクラッチパッド も表示されます。スクラッチパッドが閉じている場合、 SQLエディターおよび他のパネルを右クリックし、新しいパネルを追加することにより、再度開くまたは追加のパネルを開くことができます。

  • 下部のパネルには、 Data Output パネルが表示されます。タブ付きパネルには、クエリによって返された結果セット、クエリの実行プランに関する情報、クエリの実行に関連するサーバーメッセージ、およびサーバーから受信した非同期通知が表示されます。

ワークスペースレイアウトのクエリツール#

ワークスペースレイアウトは、クエリツールのための気の散らない専用領域を提供します。クエリツールワークスペースにアクセスすると、デフォルトでWelcomeページが開きます。

Note ワークスペースレイアウトでは、すべてのクエリツールとView/Edit Dataタブがクエリツールワークスペース内で開きます。

クラシックUIでは、ユーザーはクエリツールを使用する前にデータベースサーバーに接続し、データベースノードに移動する必要があります。ただし、ワークスペースレイアウトとWelcomeページの導入により、ユーザーはオブジェクトエクスプローラーに登録されていない場合でも、アドホックサーバーにシームレスに接続できます。

クエリツールワークスペース
  • ドロップダウンから 既存のサーバー を選択して、オブジェクトエクスプローラーに既にリストされているサーバーに接続します。それはオプショナルです。

  • アドホックサーバーの サーバー名 を提供します。

  • サーバーホストのIPアドレス、または完全修飾ドメイン名を ホスト名/アドレス フィールドに指定します。

  • サーバーホストのリスナーポート番号を ポート フィールドに入力します。

  • Server フィールドを使用して、クライアントが接続するデータベースの名前を指定します。

  • User フィールドを使用して、サーバーで認証するときに使用されるユーザーの名前を指定します。

  • Password フィールドを使用して、サーバーでの認証時に指定されるパスワードを入力します。

  • Role フィールドを使用して、サーバーでの認証後にクライアントに伝えられる特権を持つロールの名前を指定します。

  • Service フィールドを使用して、サービス名を指定します。詳細については、 Section 33.16 of the Postgres documentation を参照してください。

  • Connection Parameters のフィールドを使用して、接続パラメーターを構成します。

すべての必須フィールドに入力したら、[ Connect & Open Query Tool ]ボタンをクリックして、提供されたサーバーの詳細でクエリツールを起動します。パスワードを入力しない場合、入力するように求められます。

ツールバー#

ツールバーについては、以降のサブセクションで説明します。

SQLエディターパネル#

The SQL editor panel is a workspace where you can manually provide a query, copy a query from another source, or read a query from a file. The SQL editor features syntax coloring and autocompletion.

クエリツールエディター

オートコンプリートを使用するには、クエリの入力を開始します。クエリエディターに、クエリーに次に存在する可能性のあるオブジェクト名またはコマンドを提案させたい場合は、 Control+Spaceキーの組み合わせを押します。たとえば、 /" SELECT / FROM*/" 引用符なし、末尾のスペースありと入力し、 Control+Spaceキーの組み合わせを押して、オートコンプリートオプションのポップアップメニューから選択します。

クエリツールのオートコンプリート機能

クエリーを入力したら、ツールバーから[ Execute script ]アイコンを選択します。 SQLエディタパネルの完全な内容は、実行のためにデータベースサーバーに送信されます。 SQLエディターに表示されるコードのセクションのみを実行するには、サーバーに実行するテキストを強調表示し、 Execute script アイコンをクリックします。

クエリツール実行スクリプトセクション

カーソル位置に基づいてクエリーを実行することもできます。クエリツールはクエリを検出し、カーソル位置が変更されると強調表示されます。次に、現在の下線のあるクエリーを実行するには、ツールバーの Execute query ボタンを押します。セクションが強調表示されている場合、通常の実行と同じように動作します。

クエリツール実行クエリセクション

警告は、 Underline query at rotation? が False に設定され、 Underlined queryexecute warning? スイッチが True に設定されている場合にのみ表示されます。設定クエリツールのオプション。

クエリツール実行クエリ警告

コマンドの実行時にサーバーから返されたメッセージは、[ メッセージ ]タブに表示されます。 コマンドが成功した場合、[ メッセージ ]タブに実行の詳細が表示されます。

クエリツールメッセージパネル

Options on the Edit menu offer functionality that helps with code formatting and commenting:

  • オートインデント機能は、 Returnキーを押すと、前の行と同じ深さまでテキストを自動的にインデントします。

  • 2行以上を選択してTabキーを押して、インデントテキストをブロックします。

  • コード内のSQLスタイルの実装または削除するか、Cスタイルのコメント表記を切り替えます。

ツリービューから特定のオブジェクトを drag and drop することもできるため、長いオブジェクト名の入力にかかる時間を節約できます。オブジェクト名を含むテキストはスキーマで完全修飾されます。必要に応じて二重引用符が追加されます。ファンクションとプロシージャーの場合、ファンクション名とパラメーター名がクエリツールに貼り付けられます。

クエリ履歴パネル#

Query History タブを使用して、現在のセッションのアクティビティを確認します。

クエリツール履歴パネル

[Query History]タブには、最近のコマンドに関する情報が表示されます。

  • クエリーが呼び出された日時。

  • クエリのテキスト。

  • クエリによって返された行数。

  • サーバーがクエリーを処理し、結果セットを返すまでに要した時間。

  • サーバーから返されたメッセージ[ メッセージ ]タブには記載されていません。

  • クエリのソースツールバーに対応するアイコンで示されます。

pgAdminによって内部的に生成されたクエリーを表示または非表示にすることができます'View/Edit Data'または'Save Data'操作中。

単一のクエリーを選択して、[ 削除 ]ボタンをクリックすることにより、削除できます。 [ Query History ]タブからすべての履歴を削除する場合は、[ Remove All ]ボタンをクリックします。

Copy ボタンを使用して、特定のクエリーをクリップボードにコピーでき、 Copy to Query Editor ボタンを使用して、特定のクエリーをQuery Editorタブにコピーできます。この操作中に、クエリエディターの既存のコンテンツはすべて消去されます。

クエリ履歴は、クエリツールモードで実行している場合、ユーザーごとに各データベースのセッションを超えて維持されます。 View/Edit Dataモードでは、履歴は保持されません。デフォルトでは、最後の20クエリーがデータベースごとに保存されます。これは、MAX_QUERY_HIST_STORED`値をオーバーライドすることにより、 ``config_local.py` または config_system.py config_local.py ドキュメントを参照してください。詳細については、 config_local.py セクションを参照してください。

データ出力パネル#

Data Output パネルには、最後に実行されたクエリによって生成されたデータと統計が表示されます。

クエリツール出力パネル

[ Data Output ]タブには、クエリの結果セットがテーブル形式で表示されます。次のことができます。

  • 表示された結果セットから選択してコピーします。

  • Save results to file アイコンを使用して、 Data Output タブのコンテンツをコンマ区切りファイルとして保存します。

  • SELECTクエリの結果セットのデータが更新可能な場合は、編集します。

  • データ結果のページ間を移動します。

結果セットは次の場合に更新可能です。

  • すべての列は、単一のテーブルから直接選択されるか、まったくテーブル列ではありませんたとえば、2つの列の連結。テーブルから直接選択された列のみが編集可能で、他の列は読み取り専用です。

  • テーブルのすべての主キー列またはOIDが結果セットで選択されます。

複数回名前が変更または選択された列も読み取り専用です。

編集可能および読み取り専用の列は、列ヘッダーの鉛筆と鍵アイコンをそれぞれ使用して識別されます。

クエリツールの編集可能および読み取り専用列

更新可能なクエリ結果セットが動作するには、 psycopg2ドライバーのバージョンが2.8以上である必要があります。

更新可能な結果セットは、データの表示/編集モードの Data Grid と同じであり、同じ方法で変更できます。

自動コミットがオフの場合、データの変更は進行中のトランザクションの一部として行われ、進行中のトランザクションがない場合、新しいトランザクションが開始されます。トランザクションがコミットされない限り、データの変更はデータベースにコミットされません。

保存中にエラーが発生した場合たとえば、 NOT NULL制約を使用して列にNULLを保存しようとすると、データの変更が自動的に作成されるSAVEPOINTにロールバックされ、進行中のトランザクションで以前に実行されたクエリがロールバックされないようにします。

[ データ出力 ]パネルに表示される以前のクエリまたはコマンドからのすべての行セットは、別のクエリを呼び出すと破棄されます。別のクエリツールタブを開き、以前の結果を利用可能なままにします。

Explainパネル#

クエリの Explain または Explain Analyze プランを生成するには、ツールバーの Explain または Explain Analyze ボタンをクリックします。

Explain および Explain Analyze に関連するその他のオプションは、ツールバーの Explain Analyze ボタンの右側にあるドロップダウンから選択できます。

クエリツール ツールバーの説明ボタン

pgAdminは Explain [Analyze] プランをJSON形式で生成することに注意してください。

Explain プランの生成が成功すると、Explainパネルの下に3つのタブ/パネルが作成されます。

  • グラフィカル

EXPLAIN VERBOSE はグラフィカルに表示できないことに注意してください。 [ グラフィカル ]タブのノードアイコンをクリックして、その項目に関する情報を確認します。右側にポップアップウィンドウが表示され、選択したオブジェクトに関する情報が表示されます。 JIT統計、トリガー、および概要については、右上隅のボタンをクリックしてください。必要に応じて、同様のポップアップウィンドウが表示されます。

Explain キャンバスの左上隅にあるダウンロードボタンを使用して、プランをSVGファイルとしてダウンロードします。

Note: SVGとしてのダウンロードは、Internet Explorerではサポートされていません。

クエリツールのグラフィカルExplainプラン

説明分析 を伴うクエリプランは、 データ出力 タブで利用できることに注意してください。

  • テーブル

[ Table ]タブには、プランの詳細が表形式で表示され、 explain.depesz.com と同様の表形式を生成します。テーブルの各行は、 Explain Planノード のデータを表します。これには、ノード情報、排他的タイミング、包括的なタイミング、実際の行と計画的な行の差、実際の行、計画された行、ループが含まれる場合があります。

排他的、包括的、および行X列の背景色は、実際と計画の差によって異なる場合があります。

合計クエリ時間の排他的/包括的タイミングのパーセンテージが次の場合 > 90-赤色 > 50-オレンジ赤と黄色の間 色 > 10-黄色

プランナーが行数実際と計画を10回誤った場合 - 黄色 100回 - オレンジ色 赤と黄色の間 1000回 - 赤色

クエリツールのExplainプランテーブル
  • 統計

[ 統計 ]タブには、2つのテーブルが表示されます。1.プランノードタイプごとの統計 2.テーブルごとの統計

クエリツールの説明プラン統計

メッセージパネル#

[ メッセージ ]タブを使用して、最近実行されたクエリに関する情報を表示します。

クエリツール出力メッセージ

サーバーがエラーを返した場合、エラーメッセージは[ メッセージ ]タブに表示され、 SQLエディターでエラーの原因となった構文に下線が引かれます。クエリが成功した場合、[ メッセージ ]タブには、クエリが完了するまでにかかった時間と取得された行数が表示されます。

クエリツール出力情報

通知パネル#

Notifications タブを使用して、PostgreSQLの Listen/Notify 機能を使用して通知を表示します。詳細については、 PostgreSQL documentation を参照してください。

例

  1. 最初の クエリツール セッションで LISTEN /"foo/" を実行

クエリツール通知リッスン

2.別の クエリツール セッションで、 Notify コマンドまたは pg_notify ファンクションを実行して、ペイロードとともにイベントの通知を送信します。

クエリツール通知 notification

3.最初の クエリツール セッションで 通知 タブを観察できます。ここには、特定のチャネルの記録時間、イベント、プロセスID、およびペイロードが表示されます。

クエリツール通知パネル

グラフビジュアライザーパネル#

ツールバーのGraph Visualiser ボタンをクリックして、クエリ結果の グラフ を生成します。グラフビジュアライザーは、折れ線グラフ、積み上げ折れ線グラフ、棒グラフ、積み上げ棒グラフ、円グラフをサポートしています。

クエリツールグラフビジュアライザーパネル
  • グラフの種類

生成するグラフの種類を選択します。

クエリツール グラフビジュアライザー グラフタイプ
  • X軸

X軸に値を表示する列を X軸 ドロップダウンから選択します。 <Row Number> オプションを選択して、X軸のラベルとして行数を使用します。

クエリツールグラフビジュアライザーxaxis
  • Y軸

Y軸に値を表示する列を Y軸 ドロップダウンから選択します。ユーザーは複数の列を選択できます。ドロップダウンメニューから <Select All> オプションを選択して、すべての列を選択します。

クエリツールグラフビジュアライザーyaxis
  • ダウンロードとZoomボタン

ズームは、マウスでチャート上のエリアをクリックして選択することにより実行されます。 Zoom tooriginal ボタンを使用すると、元のズームレベルに戻ります。

ボタンバーの * Download * ボタンをクリックして、チャートをダウンロードします。

クエリツール グラフ ビジュアライザーツールバー

折れ線グラフ#

折れ線グラフ は、グラフタイプドロップダウンから'折れ線グラフ'を選択し、X軸とY軸を選択して、'Generate'ボタンをクリックすることにより生成できます。以下は、従業員名とその給与のグラフの例です。

クエリツール グラフ ビジュアライザー 折れ線グラフ

グラフの各線に異なるスタイルでデータポイントを表示するには、 Preferences で Use Different data point tasks? オプションをtrueに設定します。

積み上げ折れ線グラフ#

積み上げ折れ線グラフ は、グラフタイプドロップダウンから'積み上げ折れ線グラフ'を選択し、X軸とY軸を選択して、'Generate'ボタンをクリックすることにより生成できます。

クエリツール グラフビジュアライザー 積み上げ折れ線グラフ

棒グラフ#

棒グラフ は、グラフタイプドロップダウンから'Bar Chart'を選択し、X軸とY軸を選択して、'Generate'ボタンをクリックすることにより生成できます。

クエリツール グラフ ビジュアライザー 棒グラフ

積み上げ棒グラフ#

積み上げ棒グラフ は、グラフタイプドロップダウンから'Stacked Bar Chart'を選択し、X軸とY軸を選択して、'Generate'ボタンをクリックすることにより生成できます。

クエリツール グラフビジュアライザー 積み上げ棒グラフ

円グラフ#

円グラフ は、グラフタイプドロップダウンから'円グラフ'を選択し、ラベルと値を選択して、'Generate'ボタンをクリックすることにより生成できます。

クエリツール グラフビジュアライザー 円グラフ

接続ステータス#

Connection status 機能を使用して、クエリツールのステータスアイコンをクリックして、現在の接続とトランザクションステータスを表示します。

クエリツールの接続とトランザクションステータス

接続の変更#

ユーザーは、クエリツールの既存の開いたセッションから別のサーバーまたはデータベースに接続できます。

  • 接続ステータスの横にある接続リンクをクリックします。

  • 次に、ドロップダウンから <New Connection> オプションをクリックします。

クエリツールの接続オプション
  • 次に、接続するサーバー、データベース、ユーザー、およびロールを選択し、[保存]ボタンをクリックします。

クエリツール接続ダイアログ
  • 新しく作成された接続がオプションにリストされます。

  • 接続するには、ドロップダウンリストから新しく作成した接続を選択します。

マクロ#

クエリツールマクロを使用すると、キーを1回押すだけで事前定義されたSQLクエリーを実行できます。事前定義されたクエリーには、プレースホルダー$SELECTION$を含めることができます。マクロが実行されると、プレースホルダーは、クエリツールの[クエリエディター]ペインで現在選択されているテキストに置き換えられます。

クエリツール管理マクロ

マクロを作成するには、 クエリツール の マクロ メニューから Manage Macros オプションを選択します。使用するキーを選択し、マクロの名前とクエリーを入力します。オプションで選択プレースホルダーを含めて、 Save ボタンをクリックしてマクロを保存します。

クエリツールのManage Macrosダイアログ

マクロにクエリーを追加するには、クエリーを書いて選択し、クエリツールの[ マクロ ]メニューに移動して、[ マクロに追加 ]をクリックします。クエリはマクロに自動的に保存されます。

クエリツール マクロに追加

マクロを削除するには、[ Manage Macros ]ダイアログでマクロを選択し、[ Delete ]ボタンをクリックします。サーバーは、マクロを削除するかどうかの確認を求めます。

クエリツール マクロの管理 行のクリア確認

マクロを実行するには、適切なショートカットキーを選択するか、 マクロ メニューから選択するだけです。

クエリツールマクロの実行

サーバーサイドカーソル#

サーバーサイドのカーソルを使用すると、大規模なデータセットの部分的な取得が可能になるため、非常に大規模な結果セットを操作する場合に特に役立ちます。ただし、一般的な日常の使用シナリオでは、パフォーマンスが低下する場合があります。

サーバーサイドのカーソルを有効にするには

  • [設定]> [クエリツール]>[オプション]に移動し、/"Use server rotation?/"をTrueに設定します。

  • または、クエリツールの[ Execute ]メニューを介して、セッションごとに有効にすることもできます。

クエリツール サーバーカーソル

制限事項

1.トランザクション要件 サーバーサイドのカーソルは、トランザクションモードでのみ動作します。有効にすると、pgAdminはトランザクション内でクエリが実行されるように自動的に保証します。

  1. 限定された使用ケース 大規模なデータセットを取得する場合にのみサーバーサイドのカーソルを使用します。

3.ページネーションの制限 サーバーサイドのカーソルは合計行数を返さないため、結果グリッドでは、最初と最後のページのボタンが無効になります。したがって、実行後に合計行数は表示されません。