はじめに
今回はOracle Cloud Infrastructure(OCI)のOracle Integration Cloud(OIC)を使って
Boxのフォルダに置いてあるCSVファイルを一括でAutonomous Database(ADB)に
インポートする方法を紹介したいと思います。
■事前準備
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を表示されているのでこちらを書き留めておきます。
CSVファイルの準備はこれでOKです。
・OAuth2.0認証のためのクレデンシャル作成
続いてOICからBoxにアクセスできるようにするために
OAuth2.0認証のためのクレデンシャルを作成します。
アプリでは下記を入力し、次へを選択します。
[アプリ名] (任意)
[目的] 統合
[カテゴリ] ワークフロー
[統合する外部システム] (任意)
ユーザー認証(OAuth 2.0)を選択し、アプリの作成を実行します
下にスクロールして、クライアントID/クライアントシークレットを書き留めておきます。
*登録例
https://[OICインスタンス名]-[テナント名]-nt.integration.ocp.oraclecloud.com/icsapis/agent/oauth/callback
nt = 東京リージョン
ki = 大阪リージョン
(上記情報はOICログイン後にURLを見ても確認できます)
以下2つをチェックして変更を保存します。
Boxに格納されているすべてのファイルとフォルダの読み取り
Boxに格納されているすべてのファイルとフォルダへの書き込み
以上でBoxの設定は終了です。
2.ADBの設定
・テーブル作成
続いてADB上にテーブルを作成します。
-TBLBOXという名前のテーブルを作成するSQL(*adminユーザで実行)
CREATE TABLE TBLBOX
(
"COL1" VARCHAR2(50) primary key,
"COL2" VARCHAR2(50)
)
・ウォレットのダウンロード
あとはウォレットをダウンロードしておきます。
以上でADBの設定は終了です。
3.OICの設定
OICの設定を始める前に簡単に説明すると、OICは「接続」と「統合」の2つの機能を使って
サービス間のデータ連携を行います。
接続: 各システムやAPIへの接続設定(認証情報やエンドポイントなど)を定義し
アクセス可能な状態を構築します。
統合: 定義済みの接続を利用し、データフローやビジネスロジックを設計して
異なるシステム間での自動化やデータ変換を効率的に実現します。
それでは実際に設定に入りたいと思います。
・Box接続の作成
OICインスタンスを起動したら左上メニューにある設計を選択します。
検索ボックスに"box"と入力し、Boxアダプタを選択します。
名前、識別子に適当な文字列を入力して、呼び出し選んで作成ボタンを実行します。
以下3つの項目を入力し、Provider Consentを選択します。
Client ID: *BoxのクライアントID
Client Secret: *Boxのクライアントシークレット
Scope: root_readwrite [固定文字列]
Provider Consentを選択すると以下のような画面が表示されるので、
Boxへのアクセスを許可します。
(※ログインを求められたらそれに従います)
あとはOICに戻って右上のテストを実行して正常なら保存して終了です。
Box接続の作成は以上です。
・ADB接続の作成
続いてADB(ADW)の設定をするため、Boxと同じように接続の作成からADWで検索し、
アダプタを選択します。
名前、識別子に適当な文字列を入力して、呼び出し選んで作成ボタンを実行します。
オプションプロパティを展開し、ADBの各項目を入力します。
※情報についてはウォレットのtnsnames.oraで確認できます。
ADB接続の作成は以上です。
・統合の作成
統合のスケジュールが起動されると処理のデザインを作成することができるようになります。
これからフローを作成していくのですが、その前に完成した構成がどうなるかを
先に確認したいと思います。
統合の最終系はこちらです。
左上のデザイン変更で横画面にしています。
[1]スケジュールの矢印(→)にマウスカーソルを合わせるとプラス(+)ボタンが表示されるので
それをクリックして先程作成したBox接続(BoxConnector)を選択します。
Manage Files and Foldersを選択して続行を押します。
完了すると[2]マップと[3]呼び出しが作成されるので、[2]にマウスカーソルを合わせて
詳細(…)から編集を選択します。
Template Parameterを展開して開いてFolder Idを表示し、右上の関数の切り替えから適当な
関数を選んでFolder Idにドラッグ&ドロップします。
そうすると空の関数が表示されるので、これを上書きする形でBoxの準備で用意していた
アドレスバーに表示されていたフォルダのIDを入力します。
このようなイメージです。
(実際にIDは全て数字になっていると思います)
あとは右上の検証を教えて特に問題なければ左の戻るボタンで編集から抜けます。
[3]呼び出しの右矢印(→)のプラスボタン(+)から各(For each)を選択します。
ここではentriesを繰り返し要素のフィールドにドラッグ&ドロップして保存します。
(現在の要素名は自動でセットされます)
次は[4]各(For each)のプラスボタン(+)からアクションタブの切替え(Switch)を選択します。
表示されたらentriesの下にあるnameを右の一番上のフィールドにドラッグ&ドロップして
デザイナ・ビューに切替えを押します。
以下のようなイメージです。
name → $f0_entries/ns13:entries/ns13:name
※こちらは構築した環境によって異なる可能性があります。
その状態から下記のように関数で括ります。
fn:substring([name], 1, 8)
こちらの環境では以下のようになります。
fn:substring($f0_entries/ns13:entries/ns13:name,1,8)
これに置き換えて、下の段のOperatorもイコール(=)に変更します。
最後に関数タブから日付関数のcurrent-dateを右下のフィールドにドラッグ&ドロップして
デザイナ・ビューに切替えを押します。
あとは以下の関数と置き換えて保存します。
fn:replace(fn:substring(fn:string(fn:current-date()), 1, 10), '-', '')
*このSwitchで行った設定はファイル名の頭8文字が現在日付と同じだった場合に
後続の処理を実行する内容となります。
[5]切替え(Swich)のプラスボタン(+)から再度Box接続(BoxConnector)を選択します。
Manage Files and Foldersを選択して続行します。
続いてjsonのレスポンスをcsvに変換するための設定をします。
[7]呼び出しのプラスボタン(+)からアクション、ステージ・ファイルを選択します。
ラジオボタンでYesを選択し、デザイナ・ビューに切替えを選択し、
左ペインから[7]呼び出しの配下にあるstreamReferenceを右フィールドに
ドラッグ&ドロップして続行します。
サンプル区切りドキュメント(例:CSV)を選択した状態で続行します。
ここでは下記を入力して続行します。
ドラッグ・アンド・ドロップ: [Boxにアップロードしたファイル]
レコード名の入力: *任意 (ここではrecord)
レコードセット名の入力: *任意 (ここではrecordset)
フィールドの区切り文字の選択: Comma(,)
文字セット: UTF-8
(他の項目はそのままで良いです)
続いてADBとの接続を設定します。
[8]ステージ・ファイルの右(→)のプラスボタン(+)からADB接続を選択します。
適当な名前をつけてPerform an Operation On a Table、Insertを選択し、続行します。
スキーマ[ADMIN]からテーブル[TBLBOX]を検索して、表のインポートを実行してから続行します。
最後に2か所マッピングをします。
1つ目はフォルダ内のファイルのidを設定するため編集を選択します。
左側のEntriesの下にあるidを右側のTemplate ParametersのFile Idにドラッグ&ドロップで紐づけをし
検証ボタンを押して問題なければ戻ります。
2つ目はCSVファイルとADBのテーブルをマッピングするために編集を選択します。
Recordとテーブル名、カラムを紐づけて検証ボタンを押して問題無ければ戻ります。
右上のビジネス識別子を開いてstartTimeをビジネス識別子フィールドにドラッグ&ドロップして
保存してから統合一覧に戻ります。
以上でOICの設定は終了です。
4.動作テスト
最後にテーブルを見てみるとデータが登録されていることが確認できます。
以上で動作テストは終了です。
おわり
今回はOICを使ってBoxフォルダ内に存在するファイルが当日の日付であれば
全てADBにインポートするという検証をやってみました。
若干設定が面倒ですが、使えるようになると便利かと思います