2.2.3 クイック・スタート: SQLclでのPGQL問合せの実行

このチュートリアルでは、SQLclのPGQL問合せの実行を開始するためのリソースを提供します。

Oracle Graph Server and Clientで使用可能なプラグインを使用して、SQLclでPGQL問合せを実行できます。詳細は、Oracle SQLclユーザーズ・ガイドSQLclのPGQLプラグインを参照してください。

このチュートリアルの例は、SQLclのグラフでのPGQL問合せの実行を開始する際に役立ちます。前提条件として、この例のステップを実行するには、グラフ・サーバー・インストールで提供されるサンプル・データを使用して、データベース・スキーマで銀行グラフ・データを設定する必要があります。詳細は、グラフ分析のサンプル・データの使用を参照してください。

次の例では、PGQL文CREATE PROPERTY GRAPHを使用してプロパティ・グラフを作成し、このグラフに対してPGQL問合せを実行し、最後にSQLclを使用してグラフを削除します。

  1. データベース・スキーマ資格証明を使用してSQLclを起動します。次のコマンドでは、graphuserがSQLclへの接続に使用されるデータベース・ユーザーです。
    sql graphuser/<password_for_graphuser>@<tns_alias>
    
    SQLcl: Release 21.2 Production on Sun Jan 30 04:30:09 2022
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
    Version 21.3.0.0.0
  2. 次のように、PGQLモードを有効にします。
    SQL> pgql auto on;
    
    PGQL Auto enabled for schema=[null], graph=[null], execute=[true], translate=[false]

    前述のPGQLコマンドでは引数が使用されないことに注意してください。

  3. 銀行グラフ・データ表でプロパティ・グラフ・ビューを作成します。
    PGQL> CREATE PROPERTY GRAPH bank_graph
      2          VERTEX TABLES (
      3            bank_accounts
      4              LABEL ACCOUNTS
      5              PROPERTIES (ID, NAME)
      6          )
      7          EDGE TABLES (
      8            bank_txns
      9              SOURCE KEY (from_acct_id) REFERENCES bank_accounts (id)
     10              DESTINATION KEY (to_acct_id) REFERENCES bank_accounts (id)
     11              LABEL TRANSFERS
     12              PROPERTIES (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT, DESCRIPTION)
     13*         ) OPTIONS(PG_VIEW);
    
    Graph created
  4. PGQLモードを有効にするときにgraph引数を使用して、bank_graphをデフォルト・グラフとして設定します。
    PGQL> pgql auto on graph bank_graph;
    
    PGQL Auto enabled for schema=[null], graph=[BANK_GRAPH], execute=[true], translate=[false]
    
  5. デフォルトのグラフに対してPGQL問合せを実行します。たとえば、次のPGQL問合せは、次に示すように頂点の合計数を取得します。
    PGQL> SELECT COUNT(*) AS num_vertices FROM MATCH(n);
    
       NUM_VERTICES
    _______________
               1000
    

    前述の問合せでは、MATCH句の一部としてON句を使用してグラフ名を指定していないことに注意してください。

  6. 別のスキーマ・ユーザーとしてSQLclに再接続します。
    PGQL> conn system/<password_for_system>@<tns_alias>;
    Connected.
  7. schema引数を使用してPGQLモードを有効にし、グラフの作成に使用するデフォルト・スキーマを設定します。また、graph引数を使用して、bank_graphをデフォルト・グラフとして設定します。
    PGQL> pgql auto on schema graphuser graph bank_graph;
    
    PGQL Auto enabled for schema=[graphuser], graph=[BANK_GRAPH], execute=[true], translate=[false]
  8. PGQL問合せを実行して、次のように、グラフ上のすべてのエッジ・プロパティを取得します。
    PGQL> SELECT e.* FROM MATCH (n:accounts) -[e:transfers]-> (m:accounts) LIMIT 10;
    
       AMOUNT    DESCRIPTION    FROM_ACCT_ID    TO_ACCT_ID
    _________ ______________ _______________ _____________
         1000 transfer                   178           921
         1000 transfer                   178           462
         1000 transfer                   179           688
         1000 transfer                   179           166
         1000 transfer                   179           397
         1000 transfer                   179           384
         1000 transfer                   179           900
         1000 transfer                   180           855
         1000 transfer                   180           984
         1000 transfer                   180           352
    
    10 rows selected.

    これにより、デフォルトのスキーマを設定し、SQLclのデフォルト・グラフに対してPGQL問合せを実行できます。

  9. 最後に、必要なグラフ問合せを実行した後にグラフを削除します。
    PGQL> DROP PROPERTY GRAPH bank_graph;
    
    Graph dropped
    

また、詳細は、SQLclでのPGQL問合せの実行を参照してください。