18.1 データ・ロード機能によるアプリケーションの作成

アクセス権がある任意のスキーマ内の表にエンド・ユーザーがデータを動的にインポートできる、データ・ロード機能を持つアプリケーションを作成します。

18.1.1 データ・ロード機能のあるページの作成について

アプリケーションにデータ・ロード機能を追加するには、データ・ロード定義を作成してから、データ・ロード・ページを作成します。

ヒント:

データ・ロード定義の例を表示するには、ギャラリからサンプル・データ・ロード・アプリケーションをインストールします。「アプリケーション・ギャラリの使用」を参照してください。

データ・ロード定義は、データ・ロード定義、データ・プロファイルおよびデータ・プロファイル列で構成されています。データは、スキーマ内の既存の表またはコレクションのいずれかにロードできます。データ・プロファイル列ごとに、SQL式、SQL問合せ、ルックアップまたはトランスフォーメーション・ルールを定義できます。これらの定義は、「ネイティブ・データ・ロード」ページのプロセス・タイプで使用されます。

データ・ロード定義の作成時に、ウィザードは、データ・ロード・ページをアプリケーションに追加するように促すプロンプトを表示します。ただし、すでにデータ・ロード定義がある場合は、ページの作成ウィザードを実行することで、データ・ロード・ページを後から追加することもできます。データ・ロード・ページは、「ネイティブ・データ・ロード」ページのプロセスを使用する単一のページで構成されます。これにより、ユーザーはファイルからのアップロードまたはコピー・アンド・ペーストによるデータのプレビュー後のアップロードが可能になります。

新しいアプリケーション・データ・ロードの主な機能は次のとおりです。

  • 新しいアプリケーション・データ・ロードでは、CSVXLSXXMLおよびJSON形式がサポートされます。

  • 列マッピングは設計時に実施され、エンド・ユーザーの負担がなくなります。

  • 単純な名前または正規表現に基づいた柔軟な列マッピング。

  • トランスフォーメーション・ルールまたはルックアップ問合せによるデータ変換。

  • エンド・ユーザーのための簡単なワークフロー: ファイルのアップロード、プレビューの確認、データのロード。

  • CSVXLSXXMLおよびJSONのデータ形式を表またはコレクションにアップロードできます。

  • データ・ロードは、エラー処理の有無とともに、データを追加、マージまたは置換するように構成できます。

  • シンプルで新しいプロセス・タイプのデータ・ロード: 目的に合わせてデータ・ロードのページをカスタマイズできます。

  • カスタム・プロセスには、APEX_DATA_LOADING PL/SQL APIを使用できます。

  • 最大300列をロードできます。レガシー・データ・ロードでは最大45までのサポートになる点に注意してください。

ノート:

データ・ロード・ウィザードは、何十万ものデータ行をロードするようには設計されていません。データ・ロード・ウィザードを使用してこの大量のデータをロードすることは可能ですが、大量のデータ・ファイルの転送およびロードの両方でパフォーマンスの問題が発生する可能性があります。Oracle SQL DeveloperおよびOracle SQL*Loaderのようなツールの方が、大量のデータのロードに適しています。

サポートされるデータ型

新しいデータ・ロードでサポートされるデータ型は次のとおりです。

  • VARCHAR2

  • NUMBER

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH LOCAL TIMEZONE

  • TIMESTAMP WITH TIMEZONE

  • CLOB

18.1.2 データ・ロード定義の作成

データ・ロード定義は「共有コンポーネント」で作成します。

データ・ロード定義の作成時に、ウィザードからデータのロード・ページを作成するよう求められます。これは、「ページの作成ウィザードを使用したデータのロード・ページの作成」の説明に従って、後でページの作成ウィザードを実行して作成することもできます。

「データ・ロードの作成」の定義ウィザードでは、CSVXLSXXMLまたはJSONのサンプル・ファイル形式のアップロードがサポートされます。アップロードされたファイル形式は、データ・ロード定義のデータ・プロファイル形式として保存されます。この形式により、エンド・ユーザーがアップロードできるファイルのタイプが決定されます。たとえば、CSVサンプル・ファイルを使用してデータ・ロード定義を作成すると、そのデータ・ロード定義を使用したページからアップロードできるファイル・タイプはTXTまたはCSVのみになります。同様に、XLSXサンプル・ファイルを使用してデータ・ロード定義を作成すると、そのデータ・ロード定義を使用したページからアップロードできるファイル・タイプはXLSXのみになります。次のタスクには、EMP .csvファイルを使用したEMP表に対するデータ・ロード定義が作成されるサンプル・イメージが含まれます。

ノート:

このサンプル表は、EMP/ DEPTサンプル・データセットをインストールすることでロードできます。『Oracle APEX SQLワークショップ・ガイド』サンプル・データセットの使用を参照してください

データ・ロード定義を作成するには:

  1. 新規アプリケーションの作成
  2. データ・ロード定義ページにナビゲートします。
    1. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
      共有コンポーネント・ページが表示されます。
    2. 「他のコンポーネント」で、「データ・ロード定義」をクリックします。
  3. 「作成」をクリックします。
  4. 「メソッド」で、次のようにします。
    1. データ・ロードの作成 - データ・ロード定義を作成するメソッドを選択します。オプションには、「最初から」「既存のデータ・ロード定義のコピーとして」があります。
      このタスクでは、「最初から」を選択することにします。
    2. 「次」をクリックします。
  5. 「ターゲット」で、次のようにします。
    1. 名前 - データ・ロード定義の名前を入力します。
    2. ターゲット・タイプ - 表またはAPEXコレクションのどちらにデータをアップロードするかを指定します(たとえば、「表」を選択します)。
    3. 表の所有者 - データをロードする表の所有者を指定します。何も選択されていない場合は、アプリケーションの解析対象スキーマが使用されます。
    4. 表名 - データのロード先にする表を選択します(たとえば、EMPを選択します)。
      手動で表名を入力する場合は、表名の大/小文字が区別されます。
    5. 「次」をクリックします。
  6. 「サンプル・データ」で、次のようにします。
    1. ソース・タイプ - ファイルからサンプル・データをアップロードする方法を選択します。「ソース・タイプ」の選択に応じて、この後に表示される内容が決まります。

      オプションは次のとおりです。

      • 「ファイルのアップロード」の場合 - ファイルをドラッグ・アンド・ドロップするか、「ファイルの選択」をクリックしてファイルまで移動します。サポートされる形式には、CSV、XLSX、XMLまたはJSONがあります。

      • 「コピー・アンド・ペースト」の場合 - 区切りテキストデータをコピー・アンド・ペーストします。

      sample_data_load.pngの説明が続きます
      図sample_data_load.pngの説明

      リージョンの中央に表示されたEMP.csvは、EMP.csvサンプル・ファイルがアップロードされたことを示しています。

    2. 「次」をクリックします。
  7. 「列のマップ」の場合 - 列のマッピングは、「サンプル・データ」の列と表の列との一致によって自動的に実行されます。デフォルトを受け入れます。
    data_load_map_columns.pngの説明が続きます
    図data_load_map_columns.pngの説明

    前の例では、EMPNO列の「主キー」が選択されています。

    データ・ロード定義のみを作成するか、データ・ロード定義とデータ・ロード・ページを作成するかを決定します。次のいずれかのボタンをクリックします。

    • データ・ロードの作成 - データ・ロード定義のみを作成します。このオプションを選択した場合は、ページの作成ウィザードを実行することで、データ・ロード・ページを後から作成できます。

    • ページの作成および追加 - データ・ロード定義を作成すると、データ・ロード・ページを作成するよう求められます。

      このタスクでは、「ページの作成および追加」を選択することにします。

  8. 「ページ定義」で、次のようにします。
    1. ページ番号 - ページ番号を表示します。ページ番号はアプリケーション内のページを識別し、整数値で表示されます。
    2. 名前 - このページのテキスト名を指定します。この名前は、アプリケーションの開発プロセス時にのみ表示されます。
    3. ページ・モード - ページ・モードを指定します。さらに学習するには、フィールドレベル・ヘルプを参照してください。
  9. 「データ・ロード属性」で、次のようにします。
    1. データ・ロード - 使用するデータ・ロード定義を選択します。
    2. データのアップロード元 - アプリケーション・ユーザーがデータを提供するために、ファイルをアップロードするか、区切りテキスト・データのコピー・アンド・ペーストを使用するかを選択します。
    3. 最大ファイル・サイズ(MB) - アップロードされるファイルの許容される最大ファイル・サイズ(MB単位)を入力します。
  10. 「ナビゲーション」で、次のようにします。
    1. ブレッドクラム - ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。
    2. このページをどのようにナビゲーション・メニューに統合するかを選択します。さらに学習するには、フィールドレベル・ヘルプを参照してください。
  11. 「ページの作成」をクリックします。
    新しいページを表示したページ・デザイナが表示されます。
  12. 新しいページをテストします。
    1. 「ページの保存と実行」をクリックします。

      新しいデータ・ロード・ページが表示されます。

      test_data_load_page.pngの説明が続きます
      図test_data_load_page.pngの説明
    2. サンプル・ファイルをアップロードします。ファイルをドラッグ・アンド・ドロップするか、「ファイルの選択」をクリックします。

      「プレビュー」ページが表示されます。

      test_data_load_preview.pngの説明が続きます
      図test_data_load_preview.pngの説明
    3. 「データ・ロード」をクリックします。サンプル・データは、マージのロード・メソッドでターゲット表にロードされます。

18.1.3 ページの作成ウィザードを使用したデータのロード・ページの作成

すでにデータ・ロード定義がある場合は、ページの作成ウィザードを実行して、データ・ロード・ページを作成します。

データ・ロード定義の作成時に、ウィザードによってデータ・ロード・ページを作成するように促されます。これは、ページの作成ウィザードを実行することで、後から作成することもできます。
「ページの作成ウィザード」では、「ネイティブ・データ・ロード」ページのプロセスを使用して単一のページが作成されます。これにより、データをファイルからアップロードする機能やコピー・アンド・ペーストでアップロードする機能が提供されます。コピー・アンド・ペーストのオプションは、データ・ロード定義のデータ・プロファイル形式にCSVが選択されている場合にのみ利用できます。ユーザーがアップロードできるファイルのタイプは、データ・ロード定義のデータ・プロファイル形式に応じて異なります。

ページの作成ウィザードを実行してデータのロード・ページを作成するには:

  1. データ・ロード定義を作成します。「データ・ロード定義の作成」を参照してください。
  2. ページの作成ウィザードを実行します。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. 「ページの作成」をクリックします。

      「ページの作成」が表示され、「コンポーネント」「機能」および「レガシー・ページ」の3つのタブがあります。

  3. 「コンポーネント」で、「データのロード」を選択します。
  4. ページ定義:
    1. ページ番号 - ページ番号を表示します。ページ番号はアプリケーション内のページを識別し、整数値で表示されます。
    2. 名前 - このページのテキスト名を指定します。この名前は、アプリケーションの開発プロセス時にのみ表示されます。

      ヒント:

      このテキストは、レポート・タイトルにも使用されます。ページの作成後は、ページ・デザイナでタイトルを変更できます。

    3. ページ・モード - ページ・モードを指定します。さらに学習するには、フィールドレベル・ヘルプを参照してください。
  5. データ・ロード属性:
    1. データ・ロード - 使用するデータ・ロード定義を選択します。
    2. データのアップロード元 - アプリケーション・ユーザーがデータを提供するために、ファイルをアップロードするか、区切りテキスト・データのコピー・アンド・ペーストを使用するかを選択します。
    3. 最大ファイル・サイズ(MB) - アップロードされるファイルの許容される最大ファイル・サイズ(MB単位)を入力します。
  6. ナビゲーション - リージョンを展開して、ナビゲーションを有効または無効にします。いずれかのフラグが有効である場合は、追加の属性が表示されます。属性についてさらに学習するには、フィールドレベル・ヘルプを参照してください。
    1. ブレッドクラムの使用 - このページのブレッドクラム・エントリを作成できるようにします。デフォルトでは、ページ名がブラッドグラム・エントリ名として使用されます。
    2. ナビゲーションの使用 - このページのナビゲーション・メニュー・エントリを作成できるようにします。デフォルトでは、ページ名がナビゲーション・メニュー名として使用されます。
  7. 「ページの作成」をクリックします。
    新しいページを表示したページ・デザイナが表示されます。
  8. 新しいページをテストします。
    1. 「ページの保存と実行」をクリックします。

      新しいデータ・ロード・ページが表示されます。

    2. サンプル・ファイルをアップロードします。ファイルをドラッグ・アンド・ドロップするか、「ファイルの選択」をクリックします。

      「プレビュー」ページが表示されます。

    3. 「データ・ロード」をクリックします。サンプル・データは、マージのロード・メソッドでターゲット表にロードされます。

18.1.4 データ・ロード定義の編集

データ・ロード定義は、「共有コンポーネント」で編集します。

データ・ロード定義は、ターゲット・データ・ロード表、ロード・メソッド、エラー処理属性およびデータ・プロファイルで構成されます。

データ・ロード定義を編集するには:

  1. データ・ロード定義に関連付けするアプリケーションを選択します。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
  2. データ・ロード定義ページにナビゲートします。
    1. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
      共有コンポーネント・ページが表示されます。
    2. 「他のコンポーネント」で、「データ・ロード定義」をクリックします。
  3. 編集するデータ・ロード定義をクリックします。

    データ・ロード定義の詳細ページが表示されます。

  4. 「データ・ロード」で、次のようにします。
    1. 名前 - データ・ロード定義の名前を定義します。
    2. 静的ID - 静的IDを使用して、APIコールのデータ・ロード定義を参照します。
  5. 「ターゲット」で、次のステップを実行します。
    1. ターゲット・タイプ - 表またはAPEXコレクションのどちらにデータをロードするかを選択します。
    2. 表の所有者 - データのロード先にする表の所有者を定義します。
    3. 表名 - データのロード先にする表の名前を定義します。
  6. 「設定」で、次のステップを実行します。
    1. ロード・メソッド - 使用するロード・メソッドを指定します。オプションは次のとおりです。
      • 追加 - 表またはコレクションに行を追加します。「データ・プロファイル」で1つ以上の主キー列が定義されている場合、既存の行は変更されず、新しい行が追加されます。データ・プロファイルに主キー列が定義されていない場合は、すべての行が単に追加されます。

      • マージ - 表に行をマージします。このオプションを使用するには、データ・プロファイルに主キーが定義されている必要があります。指定した主キー値の行が存在する場合は、その行が更新されます。それ以外の場合は、行が作成されます。このオプションは、表にデータをロードする場合にのみ利用できます。

      • 置換 - 新しいデータの追加前に、ターゲット表またはコレクションに既存のデータが削除されます。

    2. コミット間隔 - データのロード中に使用するコミット間隔を指定します。コミット間隔が指定されていない場合は、データ・ロード全体が1つのトランザクションになり、最終行の後にコミットします。間隔を指定すると、APEXは指定された行数が処理されるたびにコミットします。
  7. 「エラー処理」で、次のようにします。
    1. エラー時 - データ・ロード時のエラーの処理方法を指定します。オプションは次のとおりです。
      • 無視 - エラーはメッセージなしで無視され、データ・ロードが単に続行されます。

      • 停止 - 最初のエラーの発生時にデータ・ロードが停止し、エラー・メッセージが表示されます。

      • エラーをコレクションに記録 - エラー行は、APEXコレクションに記録されます。

      • エラー・ログに記録 - エラー行は、DMLエラー・ロギング・データベース機能を使用してエラー・ロギング表に記録されます。これは、表にロードするときにのみ、追加メソッドが主キーなしで使用されている場合にかぎって利用できます。

  8. データ・プロファイル - データ・プロファイル形式と列数を表示します。「プロファイルの編集」をクリックし、データ・プロファイルを表示して編集します。

    データ・プロファイルには、データ・ソース形式を解析して列と行に変換する方法を記述します。XMLまたはJSONデータ形式の場合、行セレクタ属性には、行のコレクションが格納されているノードをポイントするXMLまたはJSONパス式が保存されています。「データ・プロファイル列」は、1つの行を解析して複数の列に変換する方法を決定します。

  9. サブスクリプション - この定義にサブスクライブしているデータ・ロード定義をリストします。
  10. コメント - このデータ・ロード定義について説明するコメントを追加します。コメントはアプリケーション・ビルダー内でのみ表示され、アプリケーションの実行時には表示されません。
  11. 「変更の適用」をクリックします。

18.1.5 データ・ロード定義のコピーまたはサブスクライブ

別のアプリケーションからデータ・ロード定義をコピーします。別のアプリケーションからデータ・ロード定義をコピーする場合は、それをサブスクライブすることもできます。

ヒント:

サブスクリプションにより、開発者はワークスペース内の複数のアプリケーション間で共有コンポーネントを再利用できます。サブスクリプションについてさらに学習するには、「共有コンポーネント・サブスクリプションの使用」を参照してください。

データ・ロード定義をコピーまたはサブスクライブするには:

  1. データ・ロード定義ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. 「共有コンポーネント」をクリックします。
    4. 「他のコンポーネント」で、「データ・ロード定義」をクリックします。

      データ・ロード定義ページが表示されます。レポートには、「サブスクライブ元」、「サブスクリプション・ステータス」および「サブスクライバ」の各列が含まれていることに注意してください。

  2. 「タスク」リストから、「別のアプリケーションからコピー」を選択します。
  3. コピー元:
    1. コピー元アプリケーション - データ・ロード定義のコピー元のアプリケーションを選択します。
    2. 「次」をクリックします。
  4. コピー:
    1. コピー先 - オプションで、データ・ロード定義の名前を編集します。
    2. アクション - アクションを選択します:
      • はい - データ・ロード定義をコピーします。
      • いいえ - データ・ロード定義をコピーしません。
      • コピーおよびサブスクライブ - データ・ロード定義をコピーおよびサブスクライブします。データ・ロード定義をサブスクライブすると、そのコピーがアプリケーションに追加され、データ・ロード定義マスター参照が設定されます。
  5. 「データ・ロード定義のコピー」をクリックします。

18.1.6 例: DMLエラー・ログへのエラーの記録

データ・ロード定義を編集して、エラーがDMLエラー・ログに記録されるようにします。

次の例は、EMP表にデータをロードするデータ・ロード定義の編集方法を示しています。データ・ロードに失敗した場合、エラーはERR$_EMPという名前のDMLエラー・ログに記録されます。

データ・ロード定義を編集して、エラーがDMLエラー・ログに記録されるようにするには:

DMLエラー・ログを作成します。

  1. SQLコマンドでDMLエラー・ログ表を作成します。
    1. ワークスペースのホームページで「SQLワークショップ」「SQLコマンド」の順にクリックします。
    2. コマンド・エディタに、ERR$_EMPというDMLエラー・ログを作成するためのSQLコマンドを入力します。たとえば:
      begin
          dbms_errlog.create_error_log( dml_table_name => 'EMP' );
      end;
    3. 「実行」([Ctrl]+[Enter])をクリックして、コマンドを実行します。
    「結果」ペインに結果が表示されます。

    ヒント:

    ERR$_EMPは、この時点でオブジェクト・ブラウザに表示されます。

データ・ロード定義を編集して、「ロード・メソッド」を変更し、「エラー処理」を定義します。

  1. データ・ロード定義ページにナビゲートします。
    1. データ・ロード定義に関連付けするアプリケーションを選択します。
    2. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
      共有コンポーネント・ページが表示されます。
    3. 「他のコンポーネント」で、「データ・ロード定義」をクリックします。
  2. 編集するデータ・ロード定義をクリックします。
    「データ・ロード定義の詳細」ページが表示されます。
  3. 「ロード・メソッド」を変更して、「エラー処理」を指定します。
    1. 設定、ロード・メソッド - 「置換」をクリックします。
    2. エラー処理、エラー時 - 「エラー・ログに記録」を選択します。
    3. エラー処理、エラー・ロギング表 - DMLエラー・ログ表を選択します(たとえば、ERR$_EMP (TABLE))。
    4. 「変更の適用」をクリックします。

別のデータ・ロード・ページの作成:

  1. ページの作成ウィザードを実行します。
    1. ヘッダー・リージョンにあるツールバーのページの編集Xをクリックします(Xは、ページ番号を表します)。
      ページ・デザイナが表示されます。
    2. 「ページ・デザイナ」ツールバーの「作成」を選択して、「ページ」を選択します。
      ページの作成ウィザードが表示されます。
  2. 「ページの作成」で、「データのロード」を選択します。
  3. 「ページ定義」で、次のようにします。
    1. ページ番号 - ページ番号を表示します。ページ番号はアプリケーション内のページを識別し、整数値で表示されます。
    2. 名前 - このページのテキスト名を指定します。この名前は、アプリケーションの開発プロセス時にのみ表示されます。
    3. ページ・モード - ページ・モードを指定します。さらに学習するには、フィールドレベル・ヘルプを参照してください。
  4. 「データ・ロード属性」で、次のようにします。
    1. データ・ロード - 前のステップで編集したデータ・ロード定義を選択します。
    2. データのアップロード元 - ユーザーがデータを指定するために、ファイルをアップロードするか、区切りテキスト・データのコピー・アンド・ペーストを使用するかを選択します。この例では、「ファイル」を選択します。
    3. 最大ファイル・サイズ(MB) - アップロードされるファイルの許容される最大ファイル・サイズ(MB単位)を入力します。
  5. ナビゲーション - リージョンを展開して、ナビゲーションを有効または無効にします。いずれかのフラグが有効である場合は、追加の属性が表示されます。属性についてさらに学習するには、フィールドレベル・ヘルプを参照してください。
    1. ブレッドクラムの使用 - このページのブレッドクラム・エントリを作成できるようにします。デフォルトでは、ページ名がブラッドグラム・エントリ名として使用されます。
    2. ナビゲーションの使用 - このページのナビゲーション・メニュー・エントリを作成できるようにします。デフォルトでは、ページ名がナビゲーション・メニュー名として使用されます。
  6. 「ページの作成」をクリックします。
    新しいページを表示したページ・デザイナが表示されます。
  7. 新しいページをテストします。
    1. 「ページの保存と実行」をクリックします。

      新しいデータ・ロード・ページが表示されます。

    2. エラー・ログ・レポートを確認するために、ロードに失敗したサンプル・ファイルをアップロードします。たとえば、NUMBER列タイプが予期されるSAL列に文字列値をロードします。ファイルをドラッグ・アンド・ドロップするか、「ファイルの選択」をクリックします。

      「プレビュー」ページが表示されます。

    3. 「データ・ロード」をクリックします。

    次の例に示すように、エラー・メッセージが表示され、ページの下側にエラーが示されます。

    test_data_load_error.pngの説明が続きます
    図test_data_load_error.pngの説明