データベースへのPgxFrameの格納
PgxFrame
出力をリレーショナル・データベース表に格納できます。
propertyグラフの機械学習アルゴリズムの出力はPgxFrame
(s)で、このデータ構造はデータベースに格納できます。 PgxFrame
の列および行は、データベース表の列および行に対応しています。
次の例では、PGQL結果セットをPgxFrame
に変換し、表としてデータベースに格納されます。
var g = session.readGraphByName("BANK_GRAPH", GraphSource.PG_VIEW)
var query = "SELECT s.acct_id FROM MATCH (s) LIMIT 10"
var rs = g.queryPgql(query)
if (rs != null) {
rs.toFrame().write().db()
.tablename("accounts") // name of the DB table
.overwrite(true)
.store();
}
g = session.read_graph_by_name("BANK_GRAPH", "pg_view")
query = "SELECT s.acct_id FROM MATCH (s)"
rs = g.execute_pgql(query)
if (rs != None):
rs.to_frame().write().db().table_name("accounts").overwrite(True).store()
ノートブックの段落を実行すると、PgxFrame
データが適切なデータベース表に挿入されます。 これを確認するには、データベース・アクションを使用してデータベース表を表示および問い合せます。 データベース・アクションでのSQL文の実行の詳細は、「データベース・アクションのSQLページ」を参照してください。
また、次の点にも注意してください。
- 生成された表名と列名は大/小文字が区別されます。 前述のコード例では、
"acct_id"
という名前の列を含む小文字名"accounts"
を持つデータベース表を作成します。ただし、問合せは次のようになります:
表名が"SELECT s.acct_id as ACCT_ID FROM MATCH (s) limit 10"
tablename("ACCOUNTS")
として指定されている場合、データベース表には大文字の名前"ACCOUNTS"
と列名が"ACCT_ID"
になります。 - 同じ名前のデータベース表がすでに存在する場合は、前述の例に示すように
overwrite(true)
を設定して上書きモードを使用できます。 前の表が切り捨てられ、データが挿入されます。 デフォルトでは、値はfalse
に設定されています。 - Always Free Autonomous Databaseインスタンス(つまり、1つのOCPUと20GBのストレージのみを含むインスタンス)を使用している場合は、Java (PGX)ノートブック段落の表への
PgxFrame
の書込み時に、1つの接続のみを使用する必要も指定する必要があります。 たとえば、次のようにwrite()
を起動する必要があります:rs.toFrame().write().db().connections(1).tablename("accounts").overwrite(true).store();