0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

本記事は、Autonomous Database(ADB)でParquetファイルをロードするときのメモ
DBMS_CLOUDパッケージを利用する方法などもあるが、ここではGUI(Database Actions)を使った方法について記載。

Parquetファイルを扱うモチベーション

Open Targets Platformのデータ利活用準備(データベースのテーブル化)をシンプルに実現したい

事前準備

リソースプリンシパルの有効化

ADBから任意のクラウドストレージにアクセスするための認可を設定
→ ここでは、OCIのリソースプリンシパルを用いることで、安全にADBからクラウドストレージにアクセス可能とする

参考: Autonomous Databaseでリソースプリンシパルを有効化する

データの準備

Object Storageにデータをロード
ここでは以下の手順でopentargetsのデータをObject Storageにコピーします。

  1. Wgetを使ってローカル環境にデータを保存
  2. 保存したデータとObject Storageとをrsyncで同期

Wgetを使ってローカル環境にデータを保存

# Wgetを使ってローカル環境にデータを保存
cd ${work directory}
wget -r \
     -np \
     -nH \
     --cut-dirs=6 \
     -R "index.html*" \
     ftp://ftp.ebi.ac.uk/pub/databases/opentargets/platform/25.03/output/association_by_datasource_direct/


# 保存したデータとObject Storageとをrsyncで同期
oci os object bulk-upload -ns ${your Name Space} -bn ${your bucket name} --src-dir .

シナリオ1: (簡易アプローチ)Database Actionsの利用

概要

Database Actionsを利用して、GUIでデータをロード

実現ステップ

  1. Database Actions/Data Studio/Loadの起動
  2. ロード対象ファイルの選択
  3. ロード実行
  4. 確認

  1. Database Actions/Data Studio/Loadの起動
    image.png

  2. ロード対象ファイルの選択
    「データ・ロード」→ 「クラウド・ストア」を選択
    image.png

クラウド・ストアの場所を選択
image.png
OCIバケット/adbを選択
image.png

該当するフォルダを選択して、右側にドラッグアンドドロップ
image.png

「はい」を選択
image.png

↓と同じような状態になっているとOK
image.png

名前のところをクリック
image.png

設定内容を確認(自動で以下のような設定となっている)
image.png

プレビューでデータが入っていることを確認
image.png

(参考)実際に実行されるSQL

CREATE TABLE "PARQUET"."ASSOCIATION_BY_DATASOURCE_DIRECT"
   (
     "DATATYPEID"         VARCHAR2(32767)
    ,"DATASOURCEID"       VARCHAR2(32767)
    ,"DISEASEID"          VARCHAR2(32767)
    ,"TARGETID"           VARCHAR2(32767)
    ,"SCORE"              BINARY_DOUBLE
    ,"EVIDENCECOUNT"      NUMBER(19,0)
   );

DECLARE
  l_TABLE_NAME        DBMS_QUOTED_ID := '"ASSOCIATION_BY_DATASOURCE_DIRECT"';
  l_CREDENTIAL_NAME   DBMS_QUOTED_ID := '"OCI$RESOURCE_PRINCIPAL"';
  l_FILE_URI_LIST     CLOB :=
    q'[https://objectstorage.ap-tokyo-1.oraclecloud.com/n/orasejapan/b/adb/o/association_by_datasource_direct/*.parquet]';
  l_FIELD_LIST        CLOB := null;
  l_FORMAT            CLOB :=
    '{
       "schema" : "first",
       "type" : "parquet",
       "logprefix" : "ASSOCIATION_BY_DATASOURCE_DIRECT"
     }';
  l_SCHEMA_NAME       DBMS_QUOTED_ID := '"PARQUET"';
  l_OPERATION_ID      NUMBER ; /* OUT */
BEGIN
  "C##CLOUD$SERVICE"."DBMS_CLOUD"."COPY_DATA"
  ( TABLE_NAME        => l_TABLE_NAME
   ,CREDENTIAL_NAME   => l_CREDENTIAL_NAME
   ,FILE_URI_LIST     => l_FILE_URI_LIST
   ,FIELD_LIST        => l_FIELD_LIST
   ,FORMAT            => l_FORMAT
   ,SCHEMA_NAME       => l_SCHEMA_NAME
   ,OPERATION_ID      => l_OPERATION_ID
  );
END;
/

DECLARE
  l_ACTIONS CLOB :=
    '{
       "tableName" : "ASSOCIATION_BY_DATASOURCE_DIRECT",
       "postIngestActions" :
       [
         {
           "type" : "columnTrim"
         }
       ]
     }';
BEGIN
  "C##ADP$SERVICE"."DBMS_INGEST_ACTIONS"."RUN_POST"(l_ACTIONS);
END;
/

ロード実行

「開始」をクリック
image.png

ロード中のステータス確認
image.png

  1. 確認

SQL Developer WEB(Database Actions/SQL)でデータがロードされているかを確認
image.png

image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?