クエリ エディターと IntelliSense

Visual Studio Code用 PostgreSQL 拡張機能は、IntelliSense 入力候補、キーボード駆動型クエリ実行、エクスポート オプションを含む結果グリッド、および組み込みのコード スニペットを備えたクエリ エディターを提供します。 SQL は、標準の VS Code エディター タブで記述し、IDE から離れることなく、接続されている PostgreSQL サーバーに対して実行します。

前提条件

クエリ エディターを開く

新しいクエリ エディターは、いくつかの方法で開くことができます。

  • [接続] ツリーで、データベース ノードを右クリックし、[新しいクエリ] を選択します。
  • コマンド パレットから PGSQL: New Query を実行します (Ctrl + Shift + P)。
  • .sql拡張子を持つ任意のファイルを開くか、作成します。

クエリ エディターでは、SQL 言語モードの VS Code テキスト エディターを使用します。 エディターをサーバーに接続すると、拡張機能によって IntelliSense がアクティブになり、クエリ実行コマンドが有効になります。

接続と切断

クエリ エディターをデータベース接続に関連付けるには:

アクション Windows/Linux macOS
Connect Ctrl + Shift + C Cmd + Shift + C
切断 Ctrl + Shift + D Cmd + Shift + D

コマンド パレットから PGSQL: Connect または PGSQL: Disconnect を実行することもできます。

データベース コンテキストを変更する

クエリ実行用のアクティブ なデータベースが VS Code ステータス バーに表示されます。 別のデータベースに切り替えるには:

  1. ステータス バーでデータベース名を選択するか、コマンド パレットから PGSQL: Change PostgreSQL Database 実行します。
  2. ピッカーからターゲット データベースを選択します。

新しいデータベース コンテキストは、そのエディター内の後続のすべてのクエリ実行に適用されます。

接続状態レンズ

pgsql.showConnectionStatusLenstrue (既定値) の場合、エディターは、現在の接続状態を示すコード レンズをファイルの先頭に表示します。 データベースを接続または変更するレンズを選択します。

IntelliSense

IntelliSense では、クエリ エディターで SQL を入力すると、コンテキスト対応のオートコンプリートが提供されます。 拡張機能は、接続されているデータベース スキーマを分析して、テーブル、列、関数、およびキーワードを提案します。

入力時に IntelliSense が自動的にアクティブ化されるか、 Ctrl + Space (macOS の場合は Cmd + Space ) を使用して手動でトリガーできます。 次の補完の種類を利用できます。

補完タイプ Description
Keyword sql キーワード ( SELECTFROMWHERE
テーブル / ビュー 現在のデータベースのテーブルとビュー
Column クエリで参照されるテーブルの列
Function 組み込み関数とユーザー定義関数
Schema データベースで使用可能なスキーマ
結合の提案 JOIN 外部キー関係に基づく句

テーブル参照の後に JOIN を入力すると、IntelliSense によって関連するテーブルが提案され、外部キーリレーションシップに基づいて結合条件が入力されます。

IntelliSense の構成

pgsql.intelliSense.enableIntelliSense設定で IntelliSense を有効または無効にします。 IntelliSense は既定で有効になっています。

IntelliSense キャッシュを更新する

データベース スキーマを変更して (テーブルや列を追加するなど)、IntelliSense にそれらの変更が反映されない場合は、キャッシュを更新します。

  1. コマンド パレットを開きます (Ctrl + Shift + P キー)。
  2. PGSQL: Refresh IntelliSense Cache を実行します。

スキーマの移行、DDL の変更、または現在のエディター セッションの外部で行われた変更の後に、このコマンドを使用します。

クエリを実行する

この拡張機能には、接続されているデータベースに対して SQL クエリを実行する複数の方法が用意されています。

クエリを実行する

PostgreSQL クエリの実行を使用して、エディターで SQL を実行します。 特定のテキストを選択すると、選択したテキストのみが実行されます。 何も選択しない場合は、エディターの内容全体が実行されます。

アクション Windows/Linux macOS
PostgreSQL クエリの実行 Ctrl + Shift + E または Shift + Enter Cmd + Shift + E または Shift + Enter
現在の PostgreSQL ステートメントの実行 Ctrl + Shift + Enter Ctrl + Shift + Enter

現在の PostgreSQL ステートメントの実行 では、現在のカーソル位置で SQL ステートメントのみが実行されます。 エディターに複数のステートメントがあり、それを選択せずに 1 つを実行する場合は、このコマンドを使用します。

クエリのキャンセル

実行時間の長いクエリを停止するには、コマンド パレットから PGSQL: Cancel PostgreSQL Query を実行します。 ステータス バーには、クエリの実行中の実行の進行状況が表示されます。

PostgreSQL クエリ結果パネル

クエリを実行すると、エディターの下の PostgreSQL クエリ結果 パネルに結果が表示されます。 パネルには、クエリの種類に応じて最大 3 つのタブがあります。

[結果] タブ

[ 結果 ] タブに結果グリッドが表示されます。 クエリが複数の結果セットを返すと、各セットがタブ内の独自のグリッドに表示されます。

結果グリッドには、データを探索するための次の機能が用意されています。

  • 並べ替え: 列ヘッダーを右クリックし、[ 昇順で並べ替え] または [ 降順で並べ替え] を選択します。 [並べ替えのクリア] を選択して並べ替えを削除します。
  • フィルター: 列ヘッダーを右クリックし、[ フィルターの表示 ] を選択して表示される行を絞り込みます。
  • 列のサイズを変更する: 列の罫線をドラッグして幅を調整するか、表示されているコンテンツに基づいて列のサイズを自動的に変更する pgsql.resultsGrid.autoSizeColumns (既定ではオン) を有効にします。
  • 行番号: 行番号はグリッドの左側に表示されます。
  • 検索: 結果ツール バーの検索フィールドを使用して、グリッド内の値を検索します。

結合されたクエリとより広い結果セットでは同じグリッド エクスペリエンスが使用されるため、エディターを離れることなく、関連する列を並べ替え、フィルター処理、スキャンできます。

データをコピーする

結果グリッドで右クリックし、コピー オプションにアクセスします。

Option Description
[すべて選択] 結果セット内のすべての行を選択する
Copy 選択したセルをクリップボードにコピーする
ヘッダーを使用してコピーする 選択したセルを列ヘッダーと共にコピーする
ヘッダーのコピー 列ヘッダーのみをコピーする

また、次の結果ウィンドウのキーボード ショートカットを使用することもできます ( pgsql.shortcuts 設定で構成できます)。

アクション 既定のショートカット
選択範囲をコピー Ctrl + C
すべて選択する Ctrl + A
結果ウィンドウの切り替え Ctrl + Alt + R
メッセージ ペインの切り替え Ctrl + Alt + Y
フォーカス結果グリッド Ctrl + Alt + G
前の結果グリッド Ctrl + Up
次の結果グリッド Ctrl + 下矢印

Tip

コピーするたびに列ヘッダーを含めるには、 pgsql.copyIncludeHeaderstrue に設定します。 コピーしたセルの改行文字を保持するには、 pgsql.copyRemoveNewLinefalse に設定します。

結果を保存する

結果ツール バーの [保存] ボタンを選択して、クエリ結果をエクスポートします。

Button フォーマット
CSV として保存 コンマ区切り値(.csv)
JSON として保存 JavaScript オブジェクト表記 (.json)
Excelとして保存 Microsoft Excel ブック (.xlsx)

次の設定を使用して CSV エクスポート動作をカスタマイズします。

Setting Description デフォルト
pgsql.saveAsCsv.delimiter 列区切り文字 ,
pgsql.saveAsCsv.lineSeparator 行区切り システムの既定
pgsql.saveAsCsv.textIdentifier テキスト フィールドを囲む文字 "
pgsql.saveAsCsv.encoding ファイルのエンコード utf-8
pgsql.saveAsCsv.includeHeaders 列ヘッダーを含める true

結果を別のタブで開く

大きな結果セットの場合は、専用のエディター タブで結果を開き、スペースを増やします。 結果ツール バー の [新しいタブで開く] を選択するか、設定で pgsql.openQueryResultsInTabByDefaulttrue に設定して、結果を常に別のタブで開きます。

[メッセージ] タブ

[ メッセージ ] タブには、ステータス メッセージ、行数、実行時間などのクエリ実行情報が表示されます。 各メッセージにはタイムスタンプが含まれます。

既定では、メッセージ ウィンドウが結果グリッドと共に開きます。 この動作を変更するには、 pgsql.messagesDefaultOpenfalse に設定します。

Tip

pgsql.showBatchTimetrue に設定すると、個々のバッチの実行時間が表示されます。

[クエリ プラン] タブ

EXPLAINまたはEXPLAIN ANALYZEクエリを実行すると、[クエリ プラン] タブが結果メッセージと共に表示されます。 このタブを選択して組み込みの実行プラン ビジュアライザーを開くか、[PostgreSQL クエリ結果] パネルのツール バーの [ クエリ プランの視覚化 ] ボタンを選択します。

コマンド パレットから クエリ プランの視覚化 (PostgreSQL) を実行して、現在のクエリのプランを視覚化することもできます。

実行プラン ビジュアライザーの詳細については、「 クエリ プラン ビジュアライザー」を参照してください。

Apache AGE クエリのグラフ ビュー

クエリが Apache AGE からグラフ指向の結果を返すと、拡張機能は関数呼び出しと Apache AGE パターン (cypher()agtype) ag_catalog検出し、標準グリッドではなくグラフ ビューで結果バッチを開きます。

  • ビューの切り替え: グリッドから グラフ ビューに切り替えるには 結果ツール バーの [グラフに切り替える] を選択し、グリッドに戻るには [テーブルに切り替える ] を選択します。
  • 要素を検査する: グラフ内のノードまたはエッジを選択して、[ プロパティ ] パネルにラベルとプロパティを表示します。
  • ナビゲート: グラフツールバーのボタンを使用します: 拡大縮小拡大、自動調整リセット
  • エクスポート: グラフ ツールバーの [PNG として保存] を選択して、グラフを画像としてエクスポートします。

Note

クエリがグラフ可能なデータを返さない場合、拡張機能は標準グリッド ビューを保持します。

コード断片

この拡張機能には、一般的な SQL パターンをスキャフォールディングするのに役立つ PostgreSQL コード スニペットが組み込まれています。 エディターにスニペット プレフィックスを入力し、 Tab キーを押してスニペットを展開します。 展開されたスニペット内のプレースホルダーをタブで移動し、値を入力します。

利用可能なスニペット

Prefix Description
pgCreateTable 主キーを使用して基本テーブルを作成する
pgDropDatabase 既存の PostgreSQL データベースを削除する
pgDropTable テーブルを削除する
pgInsertData テーブルに行を挿入する
pgSelectAll 単純な SELECT * クエリ
pgUpdateRows テーブル内のデータを更新する
pgDeleteRows テーブルからデータを削除する
pgCreateIndex 指定した列にインデックスを作成する
pgCreateUser 新しいロールまたはユーザーを作成する
pgGrantPrivileges テーブルに対する権限をユーザーに付与する
pgCTE 共通テーブル式 (CTE) の例
pgLeftJoin LEFT JOIN クエリの例
pgExplainAnalyze EXPLAIN ANALYZE パフォーマンスの詳細のクエリ
pgListTables 特定のスキーマ内のすべてのテーブルを一覧表示する

Tip

エディターに「 pg 」と入力し、IntelliSense の候補を参照して、使用可能なすべてのスニペットを表示します。

クエリの履歴

PostgreSQL アクティビティ バー パネルの [クエリ履歴 ] ビューでは、実行したクエリが自動的にキャプチャされるため、後で再度確認して再利用できます。

クエリ履歴の管理

アクション やり方
クエリを開く クエリ履歴ビューでエントリを選択して新しいエディターに読み込む
クエリの実行 エントリを右クリックし、[クエリの実行] を選択します。
クエリをコピーする エントリを右クリックし、[クエリのコピー] を選択します。
エントリを削除する エントリを右クリックし、[削除] を選択します
すべて消去 ビュー ツール バーの [ すべてのクエリ履歴のクリア ] ボタンを選択する
コマンド パレットで参照する PGSQL: Open Query History in Command Palette を実行します。

コントロール履歴キャプチャ

[クエリ履歴] ビュー ツール バーを使用して、キャプチャを開始または一時停止します。

  • クエリ履歴キャプチャの開始: 実行されたクエリの記録を再開します。
  • クエリ履歴キャプチャの一時停止: 記録を停止します。

履歴の動作を次の設定で構成します。

Setting Description デフォルト
pgsql.enableQueryHistoryFeature クエリ履歴機能を有効にする true
pgsql.enableQueryHistoryCapture 実行されたクエリを自動的にキャプチャする true
pgsql.queryHistoryLimit 保存された履歴エントリの最大数 20