データベースへの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();