ADW の Database Actions を使って、CSVファイルを定期的にロードしてみる

目次

はじめに

以前に本ブログ記事(OCI Autonomous Databaseチュートリアルを実践してみた~ADBインスタンス作成からローカルファイルのデータロードまで~)内にて、手元のPCからCSVデータをロードする手順を紹介させていただきました
実際の業務においては、日次や月次で生成されるファイルを定期的にデータベースへロードするような作業もあるかと思われます
Database Actions には、 フィード という機能が存在し、時間ベースでの定期実行や通知サービスと連携してのデータロード機能が存在しています
そこで本記事では、オブジェクト・ストレージに格納したCSVファイルを自動的にデータベースへロードする手法をご紹介したいと思います

前提 & 準備

  • ADB は作成済みで Database Actions へアクセスできること
  • ロードするデータ
    • 気象庁のサイトからダウンロードできる、気象データを使用します
    • 地点: 東京
    • 項目: 日平均気温、日最高気温、日最低気温
    • 期間: 2024年01月から2024年02月29日までの日別
      上記データを月毎のデータに編集し、列は年、月、日、平均気温(℃)、日最高気温(℃)、日最低気温(℃)とします
      文字コードはUTF-8としておきます(Shift_JISなど他の文字コードにも対応しております)
  • Object Storage のバケット
    • 気象データを格納するバケットとして WEATHER_DATA を用意し、1月のデータを格納しておきます
  • 資格証明のための認証トークン

手順

1. 気象データを登録するスキーマを用意します

気象データを登録するスキーマとして、 WEATHER を作成します
作成するユーザーには、以下のロール及びRESTの有効化が必要となります

  • DWROLE ロールを付与する
  • REST を有効にする

WEATHER スキーマの作成

以前の記事に記載があるため割愛させていただきます

DWROLE ロールを付与する

以前の記事に記載があるため割愛させていただきます

REST を有効化する

a. 3点メニューより、 RESTの有効化を選択

b. REST対応ユーザーをクリック

2. Database Actions に接続

REST を有効にすると、 Database Actions の URL が作成されるので、その URL にアクセスします

3. 気象データを登録するテーブルを作成します

以下の SQL を実行し、気象データを登録するテーブルを作成します

4. クラウド・ストアの作成

データ・ロードツールからオブジェクト・ストレージにアクセスするために、認証情報を登録します

a. 左上のハンバーガーメニューより、 Data Studio -> データ・ロードを選択します

b. データのリンクをクリックします

c. クラウド・ストアの場所の作成をクリックします

d. 資格証明を作成します

  • 資格証明種別: 今回はクラウドのユーザー名とパスワードを選択します
  • クラウド・ストア: OCI Object Storage を対象とするため、 Oracle を選択します
  • 資格証明名: 任意の名前を入力します
  • Oracle Cloud Infrastructure ユーザー名: 事前準備で認証トークンを作成したユーザー名を入力します
  • 認証トークン: 事前準備で作成した認証トークンを入力します

クラウド・ストアは、Oracle, Microsoft Azure, Amazon S3, Google, その他(Swift互換)が選択可能です

e. クラウド・ストアの場所の情報を入力します

5. ライブ表・フィードの作成

クラウド・ストレージから実際のテーブルにデータをロードするための定義を作成します

a. 左上のハンバーガーメニューより、 Data Studio -> データ・ロードを選択します

b. データのフィードをクリックします

c. ライブ表フィードの作成をクリックします

d. データ・ソースを設定します

  • クラウド・ストアの場所: 先ほど作成したクラウド・ストアを選択します
  • オブジェクト・フィルタ: 複数パターンのファイル名が混在するバケットやプレフィクスでフィルタリングしたい場合には、フィルタ条件を入力します(ワイルド・カードは使用可能)
    フィルタに一致したファイルがリストアップされ、内容の一部が表示されます
    内容の表示はShift_JISでは文字化けしましたので、ここで正確に確認したい場合はファイルの文字コードはUTF-8にしておくことを推奨します

e. 表の設定

  • ターゲット表名: データを登録するテーブル名を入力します
  • プロパティ: データ・ファイルの各種属性を設定します
    • エンコーディング: AL32UTF8を選択します(デフォルト値)
    • テキスト囲み: " (ダブルクォーテーション)を選択します(デフォルト値)
    • フィールド・デリミタ: カンマを選択します(デフォルト値)
    • 列ヘッダー行: チェックを入れ、1 を入力します(デフォルト値)
    • 無効な値をNULLに変換: チェックを外します(デフォルト値)
    • データ値に改行を含む: チェックを外します(デフォルト値)
  • マッピング
    • 含む: すべてにチェックを入れます(デフォルト値)
    • ターゲット列: 事前に作成したテーブルの列名を入力します
      このマッピングで、データ・ファイル中の不要な列を捨てたり、登録するカラム名を指定することができます

f. プレビュー

g. ライブ・フィードの設定

  • ライブ表フィード名: 任意の名前を入力(今回は WEATHER_DATA_FEED としています)
  • 通知に対して有効: チェックを外します(デフォルト値)
    バケットへオブジェクトがアップロードされたことをトリガーとして取り込みたい場合は、チェックを入れ設定を行いますが、今回は時間ベースで設定を行うため無効とします
  • スケジューリングに対して有効化: チェックを入れます(デフォルト値)
    • 間隔: 1分毎(分、時間、日、週から選択可能)
    • 曜日: 毎日(すべての曜日、月曜から金曜、日曜から木曜、カスタムから選択可能)
    • 開始日: チェックを入れ、スケジュール実行の開始時刻を入力します
      チェックを外すこともできますが、自動的に作成した日時が設定されます
    • 終了日: チェックを入れ、スケジュール実行の終了時刻を入力します
      チェックを外すことも可能で、その場合にはスケジュール実行の終了日が未設定(= 永久的に実行)となります
  • コンシューマ・グループ: HIGH を選択(デフォルト値)

h. 今すぐ実行の確認

スケジュール実行の開始時刻を待たずに実行する場合は、はいをクリックします

i. 実行結果確認

31行のデータがロードされ、拒否された行は無いことが確認できます
1月のデータをロードしていますので、正常に登録できていることとなります


実際のデータからも、正常に登録されていることが確認できます

6. 2月以降のファイルをアップロード

a. バケットへ2月のデータをアップロードします

b. スケジュール間隔が経過し、フィードが実行されたことを確認します

29行のデータがロードされ、拒否された行は無いことが確認できます
2月のデータをロードしていますので、正常に登録できていることとなります


実際のデータからも、正常に登録されていることが確認できます

まとめ

特に難しい設定などもなく、オブジェクト・ストレージに格納されているファイルをロードすることができました
CSV以外にもAVRO、JSON、GeoJSON、Parquet、ORC、TSVなどのファイル形式にも対応していますし、対応するクラウド・ストレージもAmazon S3やMicrosoft Azure Blob Storage、Google Cloud Storageなど多岐にわたります

そのため、Database Actions の Feed を用いれば、様々なプラットフォームに存在しているデータを ADW に蓄積していき、 Oracle Analytics Cloud やデータサイエンス・サービスで分析を行うなど、データ活用をより簡単に行うことが可能になるのではないでしょうか

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃OCIのサポート業務に従事している有資格者で構成された技術サポートチームがOCIに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次