3.2.4 データのロード

「SQL」ページでは、1つ以上のローカル・ファイルから1つ以上の表にデータをロードできます。

ロードできるファイル形式は、CSV、XLS、XLSX、TSV、TXT、XML、JSONおよびAVROです。XML、JSONおよびAVROファイルについては、JSON、AVROおよびXMLファイルの形式の仕様を参照してください。

3.2.4.1 ローカル・ファイルから新しい表へのデータのロード

ローカル・ファイルから新しい表にデータをロードするには、次のステップを実行します。

  1. 次のいずれかの方法で開始できます。

    • 「ナビゲータ」タブの左ペインで、オブジェクト・サブメニューオブジェクト・サブメニュー・アイコンをクリックし、「データのロード」を選択してから、「新規表へのデータのアップロード」を選択します。

      図3-6 「新規表へのデータのアップロード」オプション

      図3-6の説明が続きます
      「図3-6 「新規表へのデータのアップロード」オプション」の説明
    • 「ナビゲータ」タブで、ローカル・ファイルを左側のペインにドラッグ・アンド・ドロップします。ペインにファイルをドラッグすると、ここにファイルをドロップして開始しますというメッセージが表示されます。

    新しい表へのデータのアップロードが表示されます。データのプレビューが、グリッド形式で表示されます。

  2. 「オプションの表示/非表示」「オプションの表示/非表示」アイコンをクリックして、データ・プレビューで変更できるオプションを表示します。
    • 列名: 「ファイルから取得」を選択すると、1行目に列ヘッダーが表示されます。

    • エンコーディング: エンコーディング・タイプを選択するためのオプションは、ロードされたファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)の場合に表示されます。デフォルトのエンコーディング・タイプはUTF-8です。
    • テキスト囲みおよびフィールド・デリミタ: これらのオプションは、選択したファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)である場合にのみ表示されます。テキスト囲みとフィールド・デリミタ用にソース・ファイルで使用されている文字を選択または入力します。

    • スキップする行: スキップする行数を入力するか、上矢印と下矢印を使用して選択します。

    • プレビュー・サイズ: プレビューする行数を入力するか、上矢印と下矢印を使用して選択します。

    • アップロードする行を制限: このオプションを選択する場合は、ロードする行数を指定する必要があります。上矢印および下矢印を使用して、ロードする行数を選択します。

    選択したオプションとデータ・プレビューを削除するには、「クリア」をクリックします。

    必要なオプションを選択してから、「適用」をクリックして「次」をクリックします。

  3. 「表の定義」で、次の設定を行います。

    • 「表名」フィールドに、ターゲット表の名前を入力します。

    • ターゲット表に追加する列の行の先頭のチェック・ボックスを選択します。

    • 「列名」、「列の型」、「精度」、「スケール」、「デフォルト」、「主キー」、「Null値可能」などの列属性の値を選択または入力します。

    • 日付、タイムスタンプ、数値型のデータの場合は、「書式マスク」列が表示されます。日付型およびタイムスタンプ型の場合、ドロップダウン・リストから値を選択するか、「書式マスク」フィールドに値を入力する必要があります。数値型の場合、書式マスクはオプションです。

      日付列およびタイムスタンプ列の場合、アップロードするデータを表示する互換性のある書式マスクを指定する必要があります。たとえば、日付データが12-FEB-2021 12.21.30などの場合は、日付マスクにDD-MON-YYYY HH.MI.SSを指定する必要があります。書式マスクは、ファイル内のデータに基づいて自動的に決定されます。提案された書式マスクを確認し、必要に応じて、ターゲット・セルに直接書式を入力して変更する必要があります。

    図3-7 「新規表へのデータのアップロード」の「表定義」のステップ

    図3-7の説明が続きます
    「図3-7 「新規表へのデータのアップロード」の「表定義」のステップ」の説明

    「次」をクリックします。

  4. 前の画面で行った選択に基づいて生成されたDDLコードを確認します。ソース列からターゲット列へのマッピングも表示されます。

    「終了」をクリックします。データが正常にロードされると、新しい表が「ナビゲータ」タブに表示されます。

  5. ロードされた行および失敗した行の合計に関する詳細なレポートを表示するには、次のいずれかを実行します。
    • 「ナビゲータ」タブで表を右クリックし、「データのロード」「履歴」の順に選択します。特定の表のレポートが表示されます。

    • 「ナビゲータ」タブで、「オブジェクト」サブメニューオブジェクト・サブメニュー「データのロード」「履歴」の順に選択します。「ナビゲータ」タブで選択されているスキーマ内のすべての表のレポートが表示されます。

    • ワークシートの出力ペインで、「データのロード」タブを選択します。これにより、表示可能なすべての表(他のスキーマの表を含む)のレポートが表示されます。

    ロードされたデータのサマリーが、「履歴」ダイアログに表示されます。データのロードに失敗した場合、「失敗した行」列に失敗した行の数を表示できます。「失敗した行」列をクリックして、失敗した行を示すダイアログを開きます。

    「履歴」ダイアログで、ロードされたファイルをスキーマ名、表名またはファイル名で検索することもできます。ロードしたファイルを削除するには、「すべての履歴を削除」すべての履歴を削除をクリックします。

    「複数のローカル・ファイルから複数の表へのデータのロード」のステップを使用して、ファイルから新しい表にデータをロードすることもできます。

3.2.4.2 ローカル・ファイルから既存の表へのデータのロード

ローカル・ファイルから既存の表にデータをロードするには:

  1. 「ナビゲータ」タブの左ペインで、データのロード先の表を右クリックし、「データのロード」を選択してから「データのアップロード」を選択します。

    図3-8 既存の表の「データをアップロード」オプション

    図3-8の説明が続きます
    「図3-8 既存の表の「データをアップロード」オプション」の説明

    「データのインポート」ダイアログが表示されます。

  2. ファイルをシステムからダイアログにドラッグ・アンド・ドロップするか、「ファイルを選択」をクリックしてファイルを参照し、開きます。

    データのプレビューが、グリッド形式で表示されます。

  3. 「オプションの表示/非表示」「オプションの表示/非表示」アイコンをクリックして、データ・プレビューで変更できるオプションを表示します。
    • 列名: 「ファイルから取得」を選択すると、1行目に列ヘッダーが表示されます。
    • エンコーディング: エンコーディング・タイプを選択するためのオプションは、ロードされたファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)の場合に表示されます。デフォルトのエンコーディング・タイプはUTF-8です。
    • テキスト囲みおよびフィールド・デリミタ: これらのオプションは、選択したファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)である場合にのみ表示されます。テキスト囲みとフィールド・デリミタ用にソース・ファイルで使用されている文字を選択または入力します。
    • スキップする行: スキップする行数を入力するか、上矢印と下矢印を使用して選択します。
    • ロードする行: ロードする行数を入力するか、上矢印と下矢印を使用して選択します。
    • プレビュー・サイズ: プレビューする行数を入力するか、上矢印と下矢印を使用して選択します。

    選択したオプションとデータ・プレビューを削除するには、「クリア」をクリックします。

    必要なオプションを選択してから、「適用」をクリックして「次」をクリックします。

  4. データ・マッピングで、ファイル内のデータをターゲット表の適切な列と照合します。デフォルトでは、列名を使用して照合が実行されます。

    図3-9 データ・マッピング

    図3-9の説明が続きます
    「図3-9 データ・マッピング」の説明

    変更するには、「オプションの表示/非表示」「オプションの表示/非表示」アイコンをクリックします。「列の照合基準」で次を実行します。

    • 「名前」を選択すると、ターゲット表の列名に基づいて列が照合されます。
    • ターゲット表内の列の位置に基づいて列を照合する場合は、「位置」を選択します。
    • 現在の選択を削除して、ドロップダウン・リストから各ソース列のターゲット列を選択する場合は、「なし」を選択します。

    ノート:

    ファイル内のデータに基づいて、日付ベースの列の正しい書式マスクを自動的に取得しようとします。これが正しくない場合は、提案された書式をターゲット・セルに直接入力して変更できます。

    解決する問題がある場合は、ダイアログの右上にアイコンのような通知が表示されます。

    「次」をクリックします。

  5. 前の画面のサマリーが表示されます。「終了」をクリックします。

    データはターゲット表へのアップロードを開始します。完了すると、操作のステータスとともにエントリが「ログ」に追加されます。「ログ」を表示するには、ページ下部のタイムスタンプ通知をクリックします。操作が成功すると、「データのインポートが完了しました。」通知が表示されます。

  6. アップロード・プロセスの詳細なサマリーを参照するには、「ナビゲータ」タブで表を右クリックし、「データのロード」「履歴」の順に選択します。ロードされたデータのサマリーが、データのロードの履歴ダイアログに表示されます。

    データのロードに失敗した場合、「失敗した行」列に行数を表示できます。列をクリックして、失敗した行を示すダイアログを開きます。

    データのロードの履歴ダイアログで、ロードされたファイルをスキーマ名、表名またはファイル名で検索することもできます。ロードしたファイルを削除するには、「すべての履歴を削除」すべての履歴を削除をクリックします。

    「複数のローカル・ファイルから複数の表へのデータのロード」のステップを使用して、ファイルから既存の表にデータをロードすることもできます。

3.2.4.3 複数のローカル・ファイルから複数の表へのデータのロード

複数のファイルから複数の表にデータをロードするには:
  1. 「SQL」ページの右上にある「データ・ロード」をクリックします。

    「データのロード」スライダが表示されます。

  2. 「ファイルの追加」をクリックして1つ以上のファイルを参照し、同時に追加します。または、ファイルを「データのロード」スライダにドラッグ・アンド・ドロップできます。

    追加されたファイルはカードとして表示されます。

  3. ファイルを開くには、ファイルの名前をクリックするか、カードの右上隅にある「アクション」アイコンをクリックして「詳細」を選択します。
    「詳細」ページに、ファイルのプレビューが表示されます。「次」をクリックします。前のページに移動するには、「すべてのファイル」をクリックします。

    ノート:

    ファイルが最初にロードされたときに、ファイル全体のプレビューが表示されます。その後、設定が変更された場合、プレビューは最大10行に設定されます。設定の詳細は、「ローカル・ファイルから新しい表へのデータのロード」のステップ2を参照してください。
  4. 「ターゲットの詳細」ページの「アクション」フィールドには、次の2つのオプションがあります。
    • 「新規表を作成」では、表を作成します。デフォルトでは、このオプションが選択され、「表名」フィールドが事前入力されます。
    • 「既存の表に追加」では、ファイルを既存の表に追加します。データ・ローダーは、ファイル名と既存の表名の照合を試みます。「表の行のプレビュー」を展開して、既存の表をプレビューします。

    マッピング・オプションの詳細は、「ローカル・ファイルから新しい表へのデータのロード」のステップ3および「ローカル・ファイルから既存の表へのデータのロード」のステップ4を参照してください。

    「すべてのファイル」をクリックして、最初の「データのロード」ページに戻ります。

  5. 表にデータをロードするには、カードの右上にある「アクション」アイコンをクリックし、「実行」を選択します。

    複数の表にデータを同時にロードするには、「すべて実行」アイコン 「すべて実行」をクリックします。

    正常にアップロードされたファイルは、緑色のアイコンとチェックマーク、およびステータス「アップロード済」で表示されます。

    その他に次のようなステータスがあります。

    • 警告付きでアップロード済(黄色)。
    • 赤色の「エラーのためアップロードされませんでした」
    • エラーでアップロード済(失敗した行の数を確認できます)
    • 警告を含むは、設定に間違いがあることを示します。警告が解決されるまで、このファイルはロードされません。
  6. ファイルがロードされたら、「詳細」スライダに移動して、「結果」という名前の3番目のステップを確認します。

    「結果」ステップには、ロードされた行の合計数と、失敗した行の数が表示されます。

    ロードされたすべての前のファイルとそのロード・ステータスを表示するには、「履歴を開く」をクリックします。スキーマおよび表名でフィルタできます。

3.2.4.4 JSON、AVROおよびXMLファイルの形式の仕様

データを表に正常にロードするには、JSON、AVROおよびXMLファイルに対して特定の形式でデータを格納する必要があります。

形式の仕様については、次の各項で説明します。

3.2.4.4.1 JSONファイルとAVROファイル

JSONファイルおよびAVROファイルの場合、プリミティブ型から表の列への変換は、最上位データでのみサポートされます。ネストしたオブジェクトは、VARCHAR2 (JSON)またはCLOB (JSON)などのJSON文字列として保存されます。

ノート:

JSONチェック制約は、Oracle Database 12c以降のリリースでのみ使用可能です。

例として、次のJSONファイルを考えてみます。

[
  {
    "ItemNumber": 1,
    "Description": "One Magic Christmas",
    "Part": {
      "UnitPrice": 19.95,
      "UPCCode": 13131092899
    },
    "Quantity": 9,
    "Total": 179.55
  },
  {
    "ItemNumber": 2,
    "Description": "Lethal Weapon",
    "Part": {
      "UnitPrice": 17.95,
      "UPCCode": 85391628927
    },
    "Quantity": 5,
    "Total": 89.75
  }
]

このファイルのAVROスキーマ:

{
     "type": "array",
     "items": {
          "type": "record",
          "fields": [
               {
                    "name": "ItemNumber",
                    "type": "int"
               },
               {
                    "name": "Description",
                    "type": "string"
               },
               {
                    "name": "Part",
                    "type": {
                         "type": "record",
                         "fields": [
                              {
                                   "name": "UnitPrice",
                                   "type": "float"
                              },
                              {
                                   "name": "UPCCode",
                                   "type": "float"
                              }
                         ]
                    }
               },
               {
                    "name": "Quantity",
                    "type": "int"
               },
               {
                    "name": "Total",
                    "type": "float"
               }
          ]
     }
}

「SQL」ページの「データをアップロード」を使用してJSONファイルをロードすると、そのファイルが2行で構成される次の表に変換されます。partは、データ・マッピング時にCLOB (JSON)列型が割り当てられた、ネストされたオブジェクトです。

3.2.4.4.2 XMLファイル

この項では、XMLファイルをロードするための仕様を示します。

  • 属性には独自の列があります

    XMLデータが次のように構造化されている場合:

    <?xml version="1.0"?>
    <catalog>
      <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <publisher>John Doe</publisher>
       </book>
    </catalog>

    表内に生成される列は、idauthortitlegenreおよびpublisherです。

  • データを解析するには、2つ以上のネスト・レベルが必要です

    次の例では、1レベルのネスト(カタログ)しかないので、解析する必要のあるデータは見つかりません。

    <?xml version="1.0"?>
    <catalog>
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <publisher>John Doe</publisher>
    </catalog>

    しかし、次の例は有効です。

    <?xml version="1.0"?>
    <catalog>
      <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <publisher>John Doe</publisher>
      </book>
    </catalog>

    または

    <?xml version="1.0"?>
    <catalog>
      <bookstore>
        <book id="bk102">
          <author>Ralls, Kim</author>
          <title>Midnight Rain</title>
          <genre>Fantasy</genre>
          <publisher>John Doe</publisher>
        </book>
      </bookstore>
    </catalog>

    または

    <?xml version="1.0"?>
    <catalog>
      <bookstore>
        <shelf>
          <book id="bk102">
            <author>Ralls, Kim</author>
            <title>Midnight Rain</title>
            <genre>Fantasy</genre>
            <publisher>John Doe</publisher>
          </book>
        </shelf>
      </bookstore>
    </catalog>
  • タグ名のハイフン(-)やピリオド(.)などの特殊文字は、列名でアンダースコア(_)に置換されます。

    XMLタグ名にはハイフンとピリオドを使用できます。パーサーがXMLからJSONに変換するため、これらの文字は無効なオブジェクト・キーになります。

    <?xml version="1.0"?>
    <catalog>
      <book id="bk102">
        <author-name>Ralls, Kim</author-name>
        <title.1>Midnight Rain</title.1>
        <genre>Fantasy</genre>
        <publisher>John Doe</publisher>
       </book>
    </catalog>

    生成される列は、idauthor_nametitle_1genreおよびpublisherです。

  • 最初のレベルのテキストのみのタグは無視されます

    <?xml version="1.0"?>
    <catalog>
      <library> New Age Library </library>
      <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <publisher>John Doe</publisher>
      </book>
    </catalog>

    <library>タグは無視され、<book>タグの内容のみが考慮されます。生成される列は、idauthortitlegenreおよびpublisherです。

  • 最初のレベルの繰返しデータは、値の配列として解釈されます

    <?xml version="1.0" encoding="UTF-8"?>
    <items id="orders">
        <item_number>1</item_number>
        <description>One Magic Christmas</description>
        <part>
          <unit_price>19.95</unit_price>
          <upccode>13131092899</upccode>
        </part>
        <quantity>9</quantity>
        <total>179.55</total>
        <item_number>2</item_number>
        <description>Lethal Weapon</description>
        <part>
          <unit_price>17.95</unit_price>
          <upccode>85391628927</upccode>
        </part>
        <quantity>5</quantity>
        <total>89.75</total>
    </items>

    生成される列にはitem_numberdescriptionpartが含まれ、各列には、次の値をそれぞれ持つ行が1つのみ含まれます([1,2]、["One Magic Christmas","Lethal Weapon"]、[{" unit_price":19.95,"upccode":13131092899},{"unit_price":17.95,"upccode":85391628927}]など。

  • 値と属性を含むタグはオブジェクトに変換されます

    <?xml version="1.0"?>
    <catalog>
      <book id="bk102">
        <author country="ca">Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <publisher>John Doe</publisher>
      </book>
    </catalog>

    <author>タグは列に変換され、そのオブジェクトは値として次のように構造化されます。

    {
          "_":"Ralls, Kim",
          "country":"ca"
        }

    タグの値には、アンダースコア(_)がキーとして使用され、属性は"attribute_name": "attribute_value"として示されています。