26.13.14 CSVファイルからのPgxFrameのロード

CSVファイルからPgxFrameをロードするには、まずファイルを書き込む必要があるディレクトリ(グラフ・サーバー上)を指すディレクトリ・オブジェクトを定義して、対応するディレクトリへのアクセスを明示的に認可する必要があります。
CREATE OR REPLACE DIRECTORY graph_files AS '/tmp';
GRANT READ, WRITE ON DIRECTORY graph_files TO GRAPH_DEVELOPER;

また、次の点にも注意してください。

  • CREATE DIRECTORY文のディレクトリは、グラフ・サーバー(PGX)に存在する必要があります。
  • このディレクトリは、グラフ・サーバー(PGX)によってOSレベルで読取り可能である必要があります。

前述のコードでは、ディレクトリに対する権限をGRAPH_DEVELOPERロールに付与します。ただし、個々のユーザーに権限を付与することもできます。

GRANT READ ON DIRECTORY graph_files TO <graph_user>;

その後、次の例に示すように、CSVファイルからPgxFrameをロードできます:

opg4j> import oracle.pgx.api.frames.schema.datatypes.*
opg4j> import static oracle.pgx.api.frames.schema.ColumnDescriptor.columnDescriptor

opg4j> var exampleFrame = session.readFrame().csv().
...>     name("transfersFrame").
...>     columns(
...>       columnDescriptor("from_acct_id", DataTypes.INTEGER_TYPE),
...>       columnDescriptor("to_acct_id", DataTypes.INTEGER_TYPE),
...>       columnDescriptor("amount", DataTypes.FLOAT_TYPE),
...>       columnDescriptor("description", DataTypes.STRING_TYPE)
...>     ).
...>     load("/tmp/Transfers.csv")
import oracle.pgx.api.frames.schema.datatypes.*;
import static oracle.pgx.api.frames.schema.ColumnDescriptor.columnDescriptor;

PgxFrame exampleFrame = session.readFrame().csv().
    name("transfersFrame").
    columns(
      columnDescriptor("from_acct_id", DataTypes.INTEGER_TYPE),
      columnDescriptor("to_acct_id", DataTypes.INTEGER_TYPE),
      columnDescriptor("amount", DataTypes.FLOAT_TYPE),
      columnDescriptor("description", DataTypes.STRING_TYPE)
    ).
    load("/tmp/Transfers.csv");
>>> example_frame = session.read_frame(). \
...     csv(). \
...     name('transfers_frame'). \
...     columns([('from_acct_id', 'INTEGER_TYPE'),
...              ('to_acct_id', 'INTEGER_TYPE'),
...              ('amount', 'FLOAT_TYPE'),
...              ('description', 'STRING_TYPE')]). \
...     load('/tmp/Transfers.csv')