1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】OICを使ってBoxのCSVファイルをADBにインポートしてみる

Last updated at Posted at 2025-04-03

はじめに

今回はOracle Cloud Infrastructure(OCI)のOracle Integration Cloud(OIC)を使って
Boxのフォルダに置いてあるCSVファイルを一括でAutonomous Database(ADB)に
インポートする方法を紹介したいと思います。

■構成
image.png

■インポートイメージ
image.png

■複数のCSVファイルを1つのテーブルにインポート
image.png

■事前準備
OCIにログインし、OIC、ADBインスタンスを作成します。
またBoxアカウントも事前に準備しておきます。

※OICとADBの基本的な使い方についてはこちらをご参照ください。

■参考
・Oracle Integration チュートリアル
https://oracle-japan.github.io/ocitutorials/integration/

・101: ADBインスタンスを作成してみよう
https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/

◆目次
1.Boxの設定
2.ADBの設定
3.OICの設定
4.動作テスト

1. Boxの設定

・CSV作成

まず最初にBoxにアップロードするCSVファイルを作成します。
次の3つのファイルを作成します。
※yyyymmddは実行する当日の日付にします。

①yyyymmdd_data01.csv

col1,col2
1, data01_1
2, data01_2
3, data01_3

yyyymmdd_data02.csv

col1,col2
4, data02_4
5, data02_5
6, data02_6

yyyymmdd_data03.csv

col1,col3
7, data03_7
8, data03_8
9, data03_9

CSVを作成したら、Boxのフォルダにファイルをアップロードします。
※アドレスバーにフォルダのIDを表示されているのでこちらを書き留めておきます。
image.png

CSVファイルの準備はこれでOKです。

・OAuth2.0認証のためのクレデンシャル作成

続いてOICからBoxにアクセスできるようにするために
OAuth2.0認証のためのクレデンシャルを作成します。

左下の開発者コンソールを選択します。
image.png

右上のPlatformアプリの作成を選択します。
image.png

一番左のカスタムアプリを選択します。
image.png

アプリでは下記を入力し、次へを選択します。
[アプリ名] (任意)
[目的] 統合
[カテゴリ] ワークフロー
[統合する外部システム] (任意)

image.png

image.png

ユーザー認証(OAuth 2.0)を選択し、アプリの作成を実行します
image.png

登録後にアプリを再度選択します。
image.png

構成タブを選択します。
image.png

下にスクロールして、クライアントID/クライアントシークレットを書き留めておきます。
image.png

リダイレクトURI欄からOICエンドポイントを登録します。
image.png

*登録例
https://[OICインスタンス名]-[テナント名]-nt.integration.ocp.oraclecloud.com/icsapis/agent/oauth/callback

nt = 東京リージョン
ki = 大阪リージョン

(上記情報はOICログイン後にURLを見ても確認できます)

以下2つをチェックして変更を保存します。
Boxに格納されているすべてのファイルとフォルダの読み取り
Boxに格納されているすべてのファイルとフォルダへの書き込み
image.png

以上でBoxの設定は終了です。

2.ADBの設定

・テーブル作成

続いてADB上にテーブルを作成します。

データアクションのSQLを選択します。
image.png

シンプルにCREATE文でテーブルを作成します。
image.png

-TBLBOXという名前のテーブルを作成するSQL(*adminユーザで実行)

CREATE TABLE TBLBOX
(
    "COL1" VARCHAR2(50) primary key, 
    "COL2" VARCHAR2(50)
)

・ウォレットのダウンロード

あとはウォレットをダウンロードしておきます。

image.png

image.png

以上でADBの設定は終了です。

3.OICの設定

OICの設定を始める前に簡単に説明すると、OICは「接続」と「統合」の2つの機能を使って
サービス間のデータ連携を行います。

接続: 各システムやAPIへの接続設定(認証情報やエンドポイントなど)を定義し
アクセス可能な状態を構築します。

統合: 定義済みの接続を利用し、データフローやビジネスロジックを設計して
異なるシステム間での自動化やデータ変換を効率的に実現します。

それでは実際に設定に入りたいと思います。

・Box接続の作成

OICインスタンスを起動したら左上メニューにある設計を選択します。
image.png

そのまま接続を選択し、右上の作成を選択します。
image.png

検索ボックスに"box"と入力し、Boxアダプタを選択します。
image.png

名前、識別子に適当な文字列を入力して、呼び出し選んで作成ボタンを実行します。
image.png

以下3つの項目を入力し、Provider Consentを選択します。
image.png

Client ID: *BoxのクライアントID
Client Secret: *Boxのクライアントシークレット
Scope: root_readwrite [固定文字列]

image.png

Provider Consentを選択すると以下のような画面が表示されるので、
Boxへのアクセスを許可します。
(※ログインを求められたらそれに従います)
image.png

問題なければ次のような画面となります。
image.png

あとはOICに戻って右上のテストを実行して正常なら保存して終了です。
image.png

Box接続の作成は以上です。

・ADB接続の作成

続いてADB(ADW)の設定をするため、Boxと同じように接続の作成からADWで検索し、
アダプタを選択します。
image.png

名前、識別子に適当な文字列を入力して、呼び出し選んで作成ボタンを実行します。
image.png

オプションプロパティを展開し、ADBの各項目を入力します。
※情報についてはウォレットのtnsnames.oraで確認できます。
image.png

ウォレットのアップロード、ユーザ、パスワードを入力します。
image.png

あとは接続テストをしてみて問題なければ保存して終了です。
image.png

ADB接続の作成は以上です。

・統合の作成

ホームに戻って左上メニューの設計を選択します。
image.png

統合を選択し、作成を選択します。
image.png

スケジュールを選択します。
image.png

任意の名前をつけて実行を選択します。
image.png

統合のスケジュールが起動されると処理のデザインを作成することができるようになります。
image.png

これからフローを作成していくのですが、その前に完成した構成がどうなるかを
先に確認したいと思います。

統合の最終系はこちらです。
左上のデザイン変更で横画面にしています。
image.png

各処理の機能概要です。
image.png

それではさっそく番号順に確認していきたいと思います。
image.png

[1]スケジュールの矢印(→)にマウスカーソルを合わせるとプラス(+)ボタンが表示されるので
それをクリックして先程作成したBox接続(BoxConnector)を選択します。
image.png

エンドポイント名を適当につけて続行を押します。
image.png

Manage Files and Foldersを選択して続行を押します。
image.png

Get Folder Itemsを選択して続行を押します。
image.png

設定した情報を確認して終了します。
image.png

完了すると[2]マップと[3]呼び出しが作成されるので、[2]にマウスカーソルを合わせて
詳細(…)から編集を選択します。
image.png

Template Parameterを展開して開いてFolder Idを表示し、右上の関数の切り替えから適当な
関数を選んでFolder Idにドラッグ&ドロップします。
image.png

そうすると空の関数が表示されるので、これを上書きする形でBoxの準備で用意していた
アドレスバーに表示されていたフォルダのIDを入力します。
image.png

このようなイメージです。
(実際にIDは全て数字になっていると思います)
image.png

あとは右上の検証を教えて特に問題なければ左の戻るボタンで編集から抜けます。

[3]呼び出しの右矢印(→)のプラスボタン(+)から各(For each)を選択します。
image.png

ここではentriesを繰り返し要素のフィールドにドラッグ&ドロップして保存します。
(現在の要素名は自動でセットされます)
image.png

次は[4]各(For each)のプラスボタン(+)からアクションタブの切替え(Switch)を選択します。
image.png

表示されたらentriesの下にあるnameを右の一番上のフィールドにドラッグ&ドロップして
デザイナ・ビューに切替えを押します。
image.png

以下のようなイメージです。
name → $f0_entries/ns13:entries/ns13:name
※こちらは構築した環境によって異なる可能性があります。

その状態から下記のように関数で括ります。
fn:substring([name], 1, 8)

こちらの環境では以下のようになります。
fn:substring($f0_entries/ns13:entries/ns13:name,1,8)

これに置き換えて、下の段のOperatorもイコール(=)に変更します。
image.png

最後に関数タブから日付関数のcurrent-dateを右下のフィールドにドラッグ&ドロップして
デザイナ・ビューに切替えを押します。
image.png

あとは以下の関数と置き換えて保存します。
fn:replace(fn:substring(fn:string(fn:current-date()), 1, 10), '-', '')

image.png

*このSwitchで行った設定はファイル名の頭8文字が現在日付と同じだった場合に
後続の処理を実行する内容となります。

[5]切替え(Swich)のプラスボタン(+)から再度Box接続(BoxConnector)を選択します。
image.png

適当な名前をつけて続行します。
image.png

Manage Files and Foldersを選択して続行します。
image.png

Download Fileを選択して続行します。
image.png

最後に確認して終了します。
image.png

続いてjsonのレスポンスをcsvに変換するための設定をします。
[7]呼び出しのプラスボタン(+)からアクション、ステージ・ファイルを選択します。
image.png

適当な名前をつけて続行します。
image.png

ラジオボタンでYesを選択し、デザイナ・ビューに切替えを選択し、
左ペインから[7]呼び出しの配下にあるstreamReferenceを右フィールドに
ドラッグ&ドロップして続行します。
image.png

サンプル区切りドキュメント(例:CSV)を選択した状態で続行します。
image.png

ここでは下記を入力して続行します。
ドラッグ・アンド・ドロップ: [Boxにアップロードしたファイル]
レコード名の入力: *任意 (ここではrecord)
レコードセット名の入力: *任意 (ここではrecordset)
フィールドの区切り文字の選択: Comma(,)
文字セット: UTF-8
(他の項目はそのままで良いです)
image.png

最後に確認して終了します。
image.png

続いてADBとの接続を設定します。
[8]ステージ・ファイルの右(→)のプラスボタン(+)からADB接続を選択します。
image.png

適当な名前をつけてPerform an Operation On a Table、Insertを選択し、続行します。
image.png

スキーマ[ADMIN]からテーブル[TBLBOX]を検索して、表のインポートを実行してから続行します。
image.png

テーブルを確認してそのまま続行します。
image.png

最後に確認の上、終了します。
image.png

最後に2か所マッピングをします。
1つ目はフォルダ内のファイルのidを設定するため編集を選択します。
image.png

左側のEntriesの下にあるidを右側のTemplate ParametersのFile Idにドラッグ&ドロップで紐づけをし
検証ボタンを押して問題なければ戻ります。
image.png

2つ目はCSVファイルとADBのテーブルをマッピングするために編集を選択します。
image.png

Recordとテーブル名、カラムを紐づけて検証ボタンを押して問題無ければ戻ります。
image.png

右上のビジネス識別子を開いてstartTimeをビジネス識別子フィールドにドラッグ&ドロップして
保存してから統合一覧に戻ります。
image.png

以上でOICの設定は終了です。

4.動作テスト

統合をアクティブ化します。
image.png

image.png

アクティブ化後にリロードします。
image.png

あとはアクションから実行を選択します。
image.png

image.png

image.png

実行が上手くいくと以下のような結果となります。
image.png

最後にテーブルを見てみるとデータが登録されていることが確認できます。
image.png

以上で動作テストは終了です。

おわり

今回はOICを使ってBoxフォルダ内に存在するファイルが当日の日付であれば
全てADBにインポートするという検証をやってみました。
若干設定が面倒ですが、使えるようになると便利かと思います

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?