11.3 DISCOVERファンクション

これはファイルの列プロファイルを検出するファンクションです。このファンクションは、parse()をコールし、生成されたファイル・プロファイルを返します。このファンクションは、最初にparse()をコールしてからget_file_profile()をコールするかわりに使用できるショートカットです。

構文

function discover(
    p_content             in blob,
    p_file_name           in varchar2,
    p_decimal_char        in varchar2                                     default null,
    p_xlsx_sheet_name     in varchar2                                     default null,
    p_row_selector        in varchar2                                     default null,
    p_csv_row_delimiter   in varchar2                                     default LF,
    p_csv_col_delimiter   in varchar2                                     default null,
    p_csv_enclosed        in varchar2                                     default '"',
    p_file_charset        in varchar2                                     default 'AL32UTF8',
    p_max_rows            in number                                       default 200 ) return clob;

パラメータ

表11-1 DISCOVERファンクションのパラメータ

パラメータ 説明

p_content

BLOBとして解析されるファイル・コンテンツ

P_FILE_NAME

ファイル・タイプの導出に使用されるファイルの名前。

P_DECIMAL_CHAR

NUMBERデータ型を検出する場合は、この小数点文字を使用します。指定しない場合、プロシージャで小数点文字が自動検出されます。

P_XLSX_SHEET_NAME

XLSXワークブックの場合。解析するワークシートの名前。省略した場合、このファンクションは最初に検出されたワークシートを使用します。

P_ROW_SELECTOR

解析中にデータ型(NUMBER、DATE、TIMESTAMP)を検出するかどうか。'Y'に設定すると、このファンクションはファイル・プロファイルを計算し、そのプロファイルにデータ型情報を追加します。'N'に設定すると、データ型は検出されず、すべての列がVARCHAR2になります。デフォルトは'Y'です。

P_DECIMAL_CHAR

NUMBERデータ型を検出する場合は、この小数点文字を使用します。指定しない場合、プロシージャで小数点文字が自動検出されます。

P_XLSX_SHEET_NAME

XLSXワークブックの場合。解析するワークシートの名前。省略した場合、このファンクションは最初に検出されたワークシートを使用します。

P_ROW_SELECTOR

JSONおよびXMLファイルの場合。JSONまたはXMLファイル内の行の配列/リストへのポインタ。省略した場合、このファンクションは次のように処理します。
  • XMLファイルの場合: "/*/*" (ルート・タグの下の最初のタグ)を行セレクタとして使用します。
  • JSONファイルの場合: JSON配列を探し、最初に見つかった配列を使用します。

P_CSV_ROW_DELIMITER

CSV解析のデフォルトの行デリミタをオーバーライドします。

P_CSV_ROW_DELIMITER

CSV解析のデフォルトの行デリミタをオーバーライドします。

P_CSV_COL_DELIMITER

特定のCSV列デリミタを使用します。省略した場合、ファンクションは最初の行の内容に基づいて列デリミタを検出します。

P_CSV_ENCLOSED

CSV解析のデフォルトの囲み文字をオーバーライドします。

P_FILE_CHARSET

ファイル・エンコーディング(UTF-8 (AL32UTF8)以外の場合)。

P_MAX_ROWS

P_MAX_ROWS行が処理された後、検出を停止します。

戻り値

JSON形式のファイル・プロファイルを含むCLOBを返します。

select wwv_flow_data_parser.discover(
           p_content => {BLOB containing XLSX file},
           p_file_name=>'large.xlsx' ) as profile_json
from dual;


PROFILE_JSON
-----------------------------------------------------------
{
    "file-encoding" : "AL32UTF8",
    "single-row" : false,
    "file-type" : 1,
    "parsed-rows" : 2189,
    "columns" : [
       {
          "name" : "C0",
          "format-mask" : "",
          "selector" : "",
          "data-type" : 2
       },
       {
          "selector" : "",
          "format-mask" : "",
          "data-type" : 1,
          "name" : "FIRST_NAME"
       },
       {
          "name" : "LAST_NAME",
          "format-mask" : "",
          "selector" : "",
          "data-type" : 1
       },

       :

       {
          "name" : "DATE_",
          "format-mask" : "DD\"/\"MM\"/\"YYYY",
          "data-type" : 3,
          "selector" : ""
       },
       {
          "format-mask" : "",
          "selector" : "",
          "data-type" : 2,
          "name" : "ID"
       }
    ],
    "row-selector" : "",
    "headings-in-first-row" : true,
    "xslx-worksheet" : "sheet1.xml",
    "csv-delimiter" : ""
 }