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行目に列ヘッダーが表示されます。
- エンコーディング: エンコーディング・タイプを選択するためのオプションは、ロードされたファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)の場合に表示されます。デフォルトのエンコーディング・タイプはUTF-8です。
-
テキスト囲みおよびフィールド・デリミタ: これらのオプションは、選択したファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)である場合にのみ表示されます。テキスト囲みとフィールド・デリミタ用にソース・ファイルで使用されている文字を選択または入力します。
-
スキップする行: スキップする行数を入力するか、上矢印と下矢印を使用して選択します。
-
プレビュー・サイズ: プレビューする行数を入力するか、上矢印と下矢印を使用して選択します。
-
アップロードする行を制限: このオプションを選択する場合は、ロードする行数を指定する必要があります。上矢印および下矢印を使用して、ロードする行数を選択します。
選択したオプションとデータ・プレビューを削除するには、「クリア」をクリックします。
必要なオプションを選択してから、「適用」をクリックして「次」をクリックします。
-
-
「表の定義」で、次の設定を行います。
-
「表名」フィールドに、ターゲット表の名前を入力します。
-
ターゲット表に追加する列の行の先頭のチェック・ボックスを選択します。
-
「列名」、「列の型」、「精度」、「スケール」、「デフォルト」、「主キー」、「Null値可能」などの列属性の値を選択または入力します。
-
日付、タイムスタンプ、数値型のデータの場合は、「書式マスク」列が表示されます。日付型およびタイムスタンプ型の場合、ドロップダウン・リストから値を選択するか、「書式マスク」フィールドに値を入力する必要があります。数値型の場合、書式マスクはオプションです。
日付列およびタイムスタンプ列の場合、アップロードするデータを表示する互換性のある書式マスクを指定する必要があります。たとえば、日付データが
12-FEB-2021 12.21.30
などの場合は、日付マスクにDD-MON-YYYY HH.MI.SS
を指定する必要があります。書式マスクは、ファイル内のデータに基づいて自動的に決定されます。提案された書式マスクを確認し、必要に応じて、ターゲット・セルに直接書式を入力して変更する必要があります。
「次」をクリックします。
-
-
前の画面で行った選択に基づいて生成されたDDLコードを確認します。ソース列からターゲット列へのマッピングも表示されます。
「終了」をクリックします。データが正常にロードされると、新しい表が「ナビゲータ」タブに表示されます。
- ロードされた行および失敗した行の合計に関する詳細なレポートを表示するには、次のいずれかを実行します。
-
「ナビゲータ」タブで表を右クリックし、「データのロード」、「履歴」の順に選択します。特定の表のレポートが表示されます。
-
「ナビゲータ」タブで、「オブジェクト」サブメニュー
、「データのロード」、「履歴」の順に選択します。「ナビゲータ」タブで選択されているスキーマ内のすべての表のレポートが表示されます。
-
ワークシートの出力ペインで、「データのロード」タブを選択します。これにより、表示可能なすべての表(他のスキーマの表を含む)のレポートが表示されます。
ロードされたデータのサマリーが、「履歴」ダイアログに表示されます。データのロードに失敗した場合、「失敗した行」列に失敗した行の数を表示できます。「失敗した行」列をクリックして、失敗した行を示すダイアログを開きます。
「履歴」ダイアログで、ロードされたファイルをスキーマ名、表名またはファイル名で検索することもできます。ロードしたファイルを削除するには、「すべての履歴を削除」
をクリックします。
「複数のローカル・ファイルから複数の表へのデータのロード」のステップを使用して、ファイルから新しい表にデータをロードすることもできます。
-
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>
表内に生成される列は、
id
、author
、title
、genre
および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>
生成される列は、
id
、author_name
、title_1
、genre
および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>
タグの内容のみが考慮されます。生成される列は、id
、author
、title
、genre
および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_number
、description
、part
が含まれ、各列には、次の値をそれぞれ持つ行が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"として示されています。