18 ORACLE_BIGDATAアクセス・ドライバ

ORACLE_BIGDATAアクセス・ドライバを使用すると、Oracle Databaseの表に格納されたデータであるかのように、オブジェクト・ストアに格納されているデータにアクセスできます。

ORACLE_BIGDATAは、現在、Oracleオブジェクト・ストア、Amazon S3およびAzure Blob Storageへのアクセスをサポートしています。このドライバを使用すると、テストや小規模なデータ・セットに有用なローカル・データを問い合せることもできます。

18.1 Using the ORACLE_BIGDATAアクセス・ドライバ

ORACLE_BIGDATAドライバを使用すると、外部オブジェクト・ストアにあるデータにアクセスできます。

オブジェクト・ストア内のデータにアクセスするには、次の2つのステップが必要です。

  • 資格証明オブジェクトを作成します(パブリック・バケットには不要です)。

    資格証明オブジェクトには、オブジェクト・ストア資格証明が暗号化された形式で格納されます。資格証明によって指定されたアイデンティティは、オブジェクト・ストアの基礎となるデータにアクセスできる必要があります。

  • インライン外部表がサポートされています。これらの外部表は、単に問合せの一部として表されます。

    インライン外部表を使用して、外部表または問合せを作成します。アクセス・ドライバ・タイプはORACLE_BIGDATAである必要があります。CREATE TABLE文では、オブジェクト・ストアにアクセスする認証を提供する資格証明オブジェクトを参照する必要があります。作成する表には、オブジェクト・ストア内のファイルへのURIを提供するLOCATION句も必要です。

    パブリック・バケットの場合、CREDENTIALは必要ありません。

18.2 オブジェクト・ストアの資格証明の作成方法

資格証明オブジェクトを使用すると、外部オブジェクト・ストアにアクセスできます。

資格証明オブジェクトを作成するには、DBMS_CREDENTIAL.CREATE_CREDENTIALまたはDBMS_CLOUD.CREATE_CREDENTIALを使用します。このオブジェクトには、オブジェクト・ストアにアクセスするために必要なユーザー名とパスワード情報が含まれています。この資格証明パスワードは、クラウド・サービス内のユーザー名に対して作成された認証トークン(認証トークン)と一致する必要があります。

ノート:

DBMS_CLOUDパッケージをインストールしておく必要があります。

18.2.1 DBMS_CREDENTIAL.CREATE_CREDENTIALを使用した資格証明オブジェクトの作成

DBMS_CLOUDのサブプログラムDBMS_CREDENTIAL.CREATE_CREDENTIALを使用すると、外部オブジェクト・ストアへのアクセスを認証できます。

次の例では、DBMS_CREDENTIAL.CREATE_CREDENTIALの使用方法を示します。

例18-1 クラウド・サービス資格証明

次の例では、my_credentialはOracle Cloud Infrastructureユーザー名、usernameはアカウント・ユーザー名、passwordはOracle Cloud Infrastructure認証トークンです。

execute dbms_credential.create_credential( 
   credential_name => 'my_credential', 
   username        => 'username', 
   password        => 'password'
);

例18-2 ネイティブのOracle Cloud Infrastructure資格証明

次の例では、my_credentialはOracle Cloud Infrastructureユーザー名、user_ocidはOracle Cloud Identifier (OCID)、tenancy_ocidはOracle Cloudテナンシ識別子、private_keyはSSH秘密キー、fingerprintは公開キー・フィンガープリントです。

execute dbms_credential.create_credential(
   credential_name => 'my_credential',
   username => 'user_ocid',
   password => '',
   key => '{"tenancy_ocid":"tenancy_ocid","private_key":"private_key","fingerprint":"fingerprint"}');

資格証明を作成した後、パラメータcom.oracle.bigdata.credential.nameで資格証明オブジェクト名を指定します。このリリースの時点では、資格証明は表と同じスキーマ内にある必要があります。

18.2.2 DBMS_CLOUD.CREATE_CREDENTIALを使用した資格証明オブジェクトの作成

DBMS_CLOUDのサブプログラムDBMS_CLOUD.CREATE_CREDENTIALを使用すると、外部オブジェクト・ストアへのアクセスを認証できます。

次の例では、DBMS_CLOUD.CREATE_CREDENTIALの使用方法を示します。

ノート:

資格証明パラメータは、OCIリソース・プリンシパル、Azureサービス・プリンシパル、Amazonリソース名(ARN)またはGoogleサービス・アカウントにはできません。

例18-3 ネイティブのOracle Cloud Infrastructure資格証明

次の例では、my_credentialはOracle Cloud Infrastructureユーザー名、passwordはOracle Cloud Infrastructure認証トークン、user_ocidはOracle Cloud Identifier (OCID)、tenancy_ocidはOracle Cloudテナンシ識別子、private_keyはSSH秘密キー、fingerprintは公開キー・フィンガープリントです。

execute dbms_cloud.create_credential DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'my_credential',
    username => 'user_ocid@example.com',
    password => 'password'
    key => '{"tenancy_ocid":"tenancy_ocid","private_key":"private_key","fingerprint":"fingerprint"}');

資格証明を作成した後、パラメータcom.oracle.bigdata.credential.nameで資格証明オブジェクト名を指定します。このリリースの時点では、資格証明は表と同じスキーマ内にある必要があります。

18.2.3 オブジェクト・ストレージのLocation句の定義方法

これらの例を使用して、ソースに応じてオブジェクト・ストアURIを指定する方法を確認します。

LOCATIONは、オブジェクト・ストア内のデータを指すURIです。現在サポートされているオブジェクト・ストアは、Oracleオブジェクト・ストア、Amazon S3およびAzure Blob Storageです。

この例では次の変数が使用されています。

  • region – テナンシのリージョン
  • host – サーバー・ホスト名
  • port – ホスト上でリスニングしている、サービスに割り当てられたポート番号
  • container – コンテナ・リソースの名前
  • namespace – リージョン内のネームスペース
  • bucket – リソースのグローバルに一意な名前
  • objectname – バケット内のオブジェクトの一意の識別子
  • filename – オブジェクト・ストアのファイル名

場所を定義するには、次の前提条件に注意してください。

  • 資格証明オブジェクトは、プライベート・オブジェクト・ストアへのアクセスのために必要です。資格証明パラメータを省略する場合は、オブジェクトがパブリック・バケットにある必要があります。

    この資格証明に関連付けられているユーザーIDには、オブジェクト・ストレージからデータを読み取るためのアクセス権が必要です。

  • ローカル・ストレージを使用してオブジェクト・ストレージ内のデータへのアクセスをテストする場合は、ORACLE_LOADERデータ・ソースの場合と同じように、その場所のOracleディレクトリ・オブジェクトを指定する必要があります。

例18-4 ネイティブのOracle Cloud Infrastructureオブジェクト・ストレージ

location ('https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/objectname')

例18-5 Oracle Cloud Infrastructureオブジェクト・ストレージ

location ('https://swiftobjectstorage.region.oraclecloud.com/v1/namespace/bucket/filename'

例18-6 ホストスタイルのURI形式

location ('https://bucket.host/objectname')

例18-7 パススタイルのURI形式

location ('https://host/bucket/objectname')

たとえば、AmazonパススタイルのURIの形式は次のとおりです。

location ('https://s3-us-west-2.amazonaws.com/adwc/filename')

例18-8 Azure BLOB Storageの場所の形式

location ('https://host:port/container/blob')

たとえば、AzureパススタイルのURIの形式は次のとおりです。

location ('https://exampleacount.blob.core.windows.net/examplecontainer/exampleblob')

18.2.4 ORACLE_BIGDATAアクセス・パラメータの理解

ORACLE_BIGDATAを使用するには、データにアクセスして解析する方法を示す情報をアクセス・パラメータに指定します。

外部オブジェクト・ストアにアクセスするには、アクセス・パラメータcom.oracle.bigdata.fileformatで、csvtextfileavroparquetまたはorcのいずれかの値を使用してファイル形式タイプを定義します。
com.oracle.bigdata.fileformat=[csv|textfile|avro|parquet|orc]

ORACLE_BIGDATAを使用すると、テストや単純な問合せ目的でローカル・ファイルにアクセスすることもできます。この場合、LOCATIONフィールド値はORACLE_LOADERに使用する値と同じです。LOCATIONフィールドでは、Oracleディレクトリ・オブジェクトの後にファイルの名前を続けることができます。ローカル・ファイルの場合、資格証明オブジェクトは必須ではありません。ただし、ファイルにアクセスするには、ディレクトリ・オブジェクトに対する権限が必要です。

18.3 オブジェクト・ストアのアクセス・パラメータ

これらのアクセス・パラメータを使用すると、オブジェクト・ストアに存在するファイルに関するプロパティを指定できます。

18.3.1 プロパティを指定するための構文ルール

プロパティは、SQL CREATE TABLEACCESS PARAMETERS句および構成ファイル内に、キーワード/値のペアを使用して設定します。

構文は次のルールに従う必要があります。

  • 各キーワード/値のペアの形式は、キーワード、コロンまたは等号と、です。有効なキーワード/値のペアを次に示します。

    keyword=value
    keyword:value

    値は、セパレータの後の最初の非空白文字から行末までのすべてになります。セパレータと値の間の空白は無視されます。値の後の空白は保持されます。

  • プロパティ定義は1行または複数行にできます。

  • 行の終了文字は、LF、改行または改行とLFの組合せです。

  • 1つのプロパティ定義が複数行にわたる場合は、最終行以外の行の終了文字の前にバックスラッシュ(エスケープ文字)を付けます。この例では、Keyword1プロパティの値はValue part 1 Value part 2 Value part 3です。

    Keyword1=  Value part 1 \
               Value part 2 \
               Value part 3
  • 先頭の空白の各物理行を削除して行を連結することで、論理行を作成できます。パーサーによって、プロパティ名および値が論理行から抽出されます。

  • 文字の前に代入を示すバックスラッシュ(エスケープ文字)を付けることで、プロパティ名またはプロパティ値に特殊文字を埋め込むことができます。次の表で、特殊文字について説明します。

表18-1 プロパティの特殊文字

エスケープ・シーケンス 文字

\b

バックスペース(\u0008)

\t

水平タブ(\u0009)

\n

LF (\u000a)

\f

改ページ(\u000c)

\r

改行(\u000d)

\"

二重引用符(\u0022)

\'

一重引用符(\u0027)

\\

バックスラッシュ(\u005c)

複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。

\uxxxx

2バイト、ビッグ・エンディアンのUnicodeコード・ポイント。

1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに\uを要求します。

18.3.2 com.oracle.bigdata.fileformat

ORACLE_HDFSによって生成されたHive表のROW FORMAT句に基づいて、データ・ソースの行形式を説明します。

デフォルト値

TEXTFILE

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fileformat::=

セマンティクス

ORC

最適化された行列ファイル形式

PARQUET

列指向、バイナリ・ファイル形式

RCFILE

レコード列ファイル形式

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

プレーン・テキスト・ファイル形式

INPUTFORMAT

データ・ファイルからレコードを抽出できるJavaクラスを識別します。

OUTPUTFORMAT

出力レコードを目的の形式に設定できるJavaクラスを識別します。

18.3.3 ORACLE_BIGDATAアクセス・パラメータ

すべてのファイル形式に共通するアクセス・パラメータのセットがあります。特定のファイル形式に固有のパラメータもあります。

共通のアクセス・パラメータ

次の表に、ORACLE_BIGDATAを介してアクセスされるすべてのファイル形式に共通するパラメータを示します。1列目には、すべてのデータ・ファイル・タイプに共通する各アクセス・パラメータを示します。2列目は各パラメータの説明です。

表18-2 共通のアクセス・パラメータ

共通のアクセス・パラメータ 説明

com.oracle.bigdata.credential.name

オブジェクト・ストア内のデータ・ファイルにアクセスするときに使用する資格証明オブジェクトを指定します。

このアクセス・パラメータは、オブジェクト・ストアへのアクセスに必要です。ディレクトリ・オブジェクトを介したファイルへのアクセスの場合や、パブリック・バケットに格納されているデータの場合は必要ありません。

資格証明に指定する名前は、表の所有者と同じスキーマにある資格証明オブジェクトの名前である必要があります。この表に対するSELECTまたはREADのアクセス権をユーザーに付与すると、その資格証明が表へのアクセスに使用されます。

資格証明オブジェクトを作成するには、DBMS_CREDENTIAL PL/SQLパッケージのDBMS_CREDENTIAL.CREATE_CREDENTIALを使用します。
exec dbms_credential.create_credential(credential_name => 'MY_CRED',username =>'<username>', password => '<password>');

CREATE TABLE文で、資格証明パラメータの値を資格証明オブジェクトの名前に設定します。

com.oracle.bigdata.credential.name=MY_CRED

com.oracle.bigdata.fileformat

ファイルの形式を指定します。このパラメータの値によって、ファイルを処理するリーダーが識別されます。各リーダーは追加のアクセス・パラメータをサポートでき、それらは他のリーダーでサポートされるものもサポートされないものもあります。

有効な値: parquetorctextfileavrocsvjsondocjsontable
  • parquet - ファイルはParquetデータ・ファイル形式を使用します
  • ORC - ファイルはORC列ストレージ・ファイル形式を使用します
  • textfile - ファイルはテキスト・ファイル形式を使用します
  • avro - ファイルはAvroファイル形式を使用します
  • CSV - ファイルはCSVテキスト・ファイル形式を使用します
  • jsondoc - JSONファイルを読み取ります。JSON値は、SQL/JSONを使用して問い合せることができる単一のJSON列にマッピングされます。
  • jsontable - JSONファイルを読み取ります。JSON値はJSONオブジェクトとみなされ、オブジェクトの最上位属性は列名に基づいて特定の列にマッピングされます。

デフォルト: parquet

com.oracle.bigdata.log.opt

ログ・メッセージをログ・ファイルに書き込むかどうかを指定します。noneを指定すると、ログ・ファイルは作成されません。値がnormalの場合、ファイル・リーダーでメッセージを書き込むようになっていると、ログ・ファイルが作成されます。ログ・ファイルに書き込む内容はファイル・リーダー次第です。

有効な値: normalnone

デフォルト: none

com.oracle.bigdata.log.qc

パラレル問合せコーディネータによって作成されるログ・ファイルの名前を指定します。このパラメータは、com.oracle.bigdata.log.optnormalに設定されている場合にのみ使用されます。有効な値は、ORACLE_HIVEおよびORACLE_HDFScom.oracle.bigdata.log.qcに指定されている値と同じです。

com.oracle.bigdata.log.exec

問合せの実行時に作成されるログ・ファイルの名前を指定します。この値は、com.oracle.bigdata.log.execがnormalに設定されている場合のみ使用されます(必須です)。有効な値は、ORACLE_HIVEおよびORACLE_HDFSで指定されている値と同じです。

有効な値: normalnone

デフォルト: none

Avro固有のアクセス・パラメータ

共通のアクセス・パラメータの他に、Avroファイル形式でのみ有効なパラメータもあります。この表では、1列目にAvroファイル形式に固有のアクセス・パラメータを示し、2列目でそのパラメータについて説明します。現時点では、Avro固有のパラメータは1つのみです。

表18-3 Avro固有のアクセス・パラメータ

Avro固有のパラメータ 説明

com.oracle.bigdata.avro.decimaltpe

バイト配列に格納されている10進数の表現を指定します。

有効な値: intintegerstrstring

デフォルト: このパラメータを使用しない場合、Avroの10進数列は、バイト配列に格納されているのはAvro仕様で定義されているとおりの値の数値表現(デフォルトはint)であるという想定で読み取られます。

Parquet固有のアクセス・パラメータ

一部のアクセス・パラメータは、Parquetファイル形式でのみ有効です。この表では、1列目にParquetファイル形式に固有のアクセス・パラメータを示し、2列目でそのパラメータについて説明します。

表18-4 Parquet固有のアクセス・パラメータ

Parquet固有のアクセス・パラメータ 説明

com.oracle.bigdata.prq.binary_as_string

これは、binaryを文字列として格納するかどうかを指定するブール型プロパティです。

有効な値: truetyesylfalsefnon0

デフォルト: true

com.oracle.bigdata.prq.int96_as_timestamp

これは、int96がタイムスタンプを表すかどうかを指定するブール型プロパティです。

有効な値: truetyesylfalsefnon0

デフォルト: true

テキスト・ファイルおよびCSVに固有のアクセス・パラメータ

テキスト・ファイルとカンマ区切り値(csv)ファイル形式は、Hiveテキスト・ファイル形式に似ています。これは、デリミタ付きファイルからテキスト・データおよびcsvデータを読み取ります。ORACLE_BIGDATAは、行の終了文字(\n\rまたは\r\n)を自動的に検出します。デフォルトでは、ファイル内のフィールドはカンマで区切られており、ファイル内のフィールドの順序は外部表内の列の順序と一致すると想定されています。

例18-9 CSVデータ・ファイル

これは単純なcsvの例です。このデータ・ファイルにはカンマ区切りの値が含まれ、オプションで引用符で囲まれています。

–----Source csv data in t.dat
t.dat:     

1,"abc",     
2,xyx,
–---------Create an external table over the csv source data in t.dat
CREATE TABLE t     
( 
 c0 number,       
 c1 varchar2(20)
) 
ORGANIZATION external     
( 
 TYPE oracle_bigdata
 DEFAULT DIRECTORY DMPDIR
 ACCESS PARAMETERS      
 (         
  com.oracle.bigdata.fileformat=csv
 )
 location
 (         
  't.dat'       
 )     
)REJECT LIMIT 1
;
–------Select data from external table
select c0, c1 from t;  

 C0    C1     
----  -----
 1     abc
 2     xyz

例18-10 CSVデータ・ファイル

この例では、フィールド・セパレータが'|'であるcsvデータ・ソースを使用して外部表を作成する方法を示します。データ・ファイルはgzipで圧縮され、空白にNULLが使用され、日付書式を含みます。

–----The source csv data in t.dat
t.dat:     

 1|  |     
 2|Apr-99-30|
–------Create an external table over the csv data source in t.dat
CREATE TABLE t(       
 c0 number,       
 c1 date     
)     
ORGANIZATION external     
(       
 TYPE oracle_bigdata       
 DEFAULT DIRECTORY DMPDIR       
 ACCESS PARAMETERS      
 (         
  com.oracle.bigdata.fileformat=textfile        
  com.oracle.bigdata.compressiontype=gzip        
  com.oracle.bigdata.csv.rowformat.separatorcharacter='|'        
  com.oracle.bigdata.blankasnull=true         
  com.oracle.bigdata.dateformat="MON-RR-DD HH:MI:SS"
 )       
 location       
 (         
  't.dat.gz'
  )     
 )REJECT LIMIT 1     
;
--Select csv data from external table
QL> select c0, c1 from t;    
         
 C0       C1    
------ ---------             
  1              
  2    30-APR-99

例18-11 JSONデータ・ファイル - 列へのJSON値のマップ

この方法は、単純なJSONドキュメントに適しています。行は主に、複数のキー/値ペアを持つ単一のオブジェクトで構成されることが想定されています。通常の表と同様に、列のデータ型はファイルにある値のデータ型と一致する必要があります。ドキュメントにネストされた値(複雑な値)が含まれている場合、パーサーは値をJSONドキュメントとして出力します。ただし、これは文字列として格納されます。ユーザーは、アクセス・パラメータcom.oracle.bigdata.fileformat=jsontableを介してこのマッピング方式を指定します。

このマッピング・スキームの例として、次のUC1ファイルを考えてみます:

{"ts":1603802918441,"level":"DEBUG1","component":"resp","cell-id":"cloudsql-v1-12"}
{"ts":1603802918442,"level":"DEBUG2","component":[{"tst":1},{"tst":2},{"tst":3}],"cellid":"cloudsql-v1-12"}
{"ts":1603802918443,"level":"DEBUG3","component":"resp","cell-id":"cloudsql-v1-12"}
{"ts":1603802918444,"level":"DEBUG4","component":"resp","cell-id":"cloudsql-v1-12"}

次の外部表を作成できます:

CREATE TABLE logs(
    ts number(20),
    lvl varchar(35)
    component varchar(50),
    cellid varchar2(20)
)   ORGANIZATION EXTERNAL
   (TYPE ORACLE_BIGDATA
    DEFAULT DIRECTORY default_dir
    ACCESS PARAMETERS
      (com.oracle.bigdata.fileformat = jsontable)
        location ('nested.json'));

その後、次のように表を問い合せることができます:

SQL> Select * from logs;
TS         LVL        COMPONENT                       CELLID
---------- --------- -------------------------------- -----------------
1.6038E+12 DEBUG1    resp                             cloudsql-v1-12
1.6038E+12 DEBUG2    [{"tst":1},{"tst":2},{"tst":3}]  cloudsql-v1-12
1.6038E+12 DEBUG3    resp                             cloudsql-v1-12
1.6038E+12 DEBUG4    resp                             cloudsql-v1-12

4 rows selected.

行2のコンポーネント列の値は、JSONドキュメントとして表されることに注意してください。すでに説明したように、これはvarcharとしてv1に格納されます。通常、データ型マッピング方式は、表DDLで定義されたデータ型に依存します。データ型の不一致がある場合、値は拒否され、処理が続行されます。たとえば、次のシナリオを考えてみます。

{"Customer ID", 123456}
{"Customer ID", "123456"}
{"Customer ID", true}

表の列が数値として定義されている場合、前述の行3は変換エラーを生成し、値を拒否します。ただし、これは行2の引用符で囲まれた値に対して回復可能性があります。

例18-12 JSONデータ・ファイル - 行全体が単一の列にマッピングされます。

このマッピング方式では、JSONドキュメント全体がJSONタイプの単一の列にマッピングされます。ユーザーは、アクセス・パラメータcom.oracle.bigdata.fileformat=jsondocを介してこのマッピング方式を指定します。

このマッピング・スキームの例として、次のUC1ファイルを考えてみます:

{"ts":1603802918441,"level":"DEBUG1","component":"resp","cell-id":"cloudsql-v1-12"}
{"ts":1603802918442,"level":"DEBUG2","component":[{"tst":1},{"tst":2},{"tst":3}],"cellid":"cloudsql-v1-12"}
{"ts":1603802918443,"level":"DEBUG3","component":"resp","cell-id":"cloudsql-v1-12"}
{"ts":1603802918444,"level":"DEBUG4","component":"resp","cell-id":"cloudsql-v1-12"}

次の外部表を作成できます:

CREATE TABLE logs (data JSON)
  ORGANIZATION EXTERNAL
   (TYPE ORACLE_BIGDATA
    DEFAULT DIRECTORY default_dir
    ACCESS PARAMETERS
      (com.oracle.bigdata.fileformat = jsondoc)
    location ('nested.json'));

その後、外部表を問い合せることができます:

SQL> select l.doc.cell-id, l.doc.component[1].tst
     from logs l
     where l.doc.ts = 1603802918442;
  cell-id            tst
--------------------------------
cloudsql-v1-12     2

前述の例では、2番目の行のコンポーネントおよびセルID値(TS = 1603802918442)を選択しました。行2のコンポーネント値が配列であることを確認します。次に、配列の2番目の項目(つまり、COMPONENT[1])を問い合せます。

例18-13 JSONデータ・ファイル

これは、各行が1つのJSONドキュメントであるJSONファイルです。各行に外部表がアクセスします。問合せでは、Oracle SQL JSON関数を使用してデータが解析されます。
{"id":"72","name":"George","lat":40.76727216,"lon":-73.99392888,"segments":["wealthy","middle-aged"],"age":45}
{"id":"79","name":"Lucy","lat":40.71911552,"lon":-74.00666661,"segments":["married","yes"],"age":33}
— Create the external table over Json source 
CREATE TABLE people (
 data json         
)    
ORGANIZATION EXTERNAL ( 
  TYPE ORACLE_BIGDATA      
  ACCESS PARAMETERS(        
    com.oracle.bigdata.fileformat=jsondoc           
    )      
  LOCATION ('https://swftobjectstorage.us-ashburn-1.oraclecloud.com/n/mytenant/b/people/o/data.json')   
)
REJECT LIMIT UNLIMITED;
–---Select data from external table
select s.data.id,
  s.data.name,
  s.data.segments[0] 
from people s;

id     Name     segments[0]
–---   –----    –-----------------------------------
  72   George   wealthy
  79   Lucy     married

テキスト・ファイル、CSV固有およびJSON固有のアクセス・パラメータ

表18-5 テキスト・ファイルおよびCSVに固有のアクセス・パラメータ

テキスト・ファイルに固有のアクセス・パラメータ 説明

com.oracle.bigdata.buffersize

ファイルの読取りに使用する入出力(I/O)バッファのサイズを指定します。値は、バッファのサイズ(KB単位)です。また、バッファ・サイズはレコードで許容される最大サイズでもあります。フォーマット・リーダーは、この値より大きいレコードを検出すると、エラーを返します。

デフォルト: 1024

com.oracle.bigdata.blankasnull

trueに設定すると、空白で構成されるフィールドがNULLとしてロードされます。

有効な値: truefalse

デフォルト: false

: com.oracle.bigdata.blankasnull=true

com.oracle.bigdata.characterset

ソース・ファイルの文字セットを指定します。

有効な値: UTF-8

デフォルト: UTF-8

: com.oracle.bigdata.characterset=UTF-8

com.oracle.bigdata.compressiontype

このパラメータを指定した場合、コードは、指定された圧縮スキームに従ってデータを解凍しようとします。

有効な値: gzipbzip2zlibdetect

デフォルト: 圧縮なし

detectを指定すると、フォーマット・リーダーはサポートされている圧縮方法のうちどれを使用してファイルが圧縮されたかを判別しようとします。

com.oracle.bigdata.conversionerrors

行でデータ型の変換エラーが発生した場合、関連する列をNULLとして格納するか、その行を拒否します。

有効な値: reject_recordstore_null

デフォルト: store_null

: com.oracle.bigdata.conversionerrors=reject_record

com.oracle.bigdata.csv.rowformat.nulldefinedas

フィールドの値を示すために使用する文字がNULLであることを指定します。パラメータを指定しない場合、値はありません。

com.oracle.bigdata.csv.rowformat.fields.terminator

フィールド値を区切るために使用する文字を指定します。文字値は一重引用符で囲む必要があります。例: '|'

デフォルト: ','

com.oracle.bigdata.csv.rowformat.fields.escapedby

埋込みフィールドの終了記号またはフィールド値の行の終了文字をエスケープするために使用する文字を指定します。文字値は一重引用符で囲む必要があります。例: '\'

com.oracle.bigdata.dateformat

ソース・ファイル内の日付書式を指定します。書式オプションAutoでは、次の書式がチェックされます。

JMM-DD-YYYYBCMM-DD-YYYYYYYYMMDD HHMISSYYMMDD HHMISSYYYY.DDDYYYY-MM-DD

デフォルト: yyyy-mm-dd hh24:mi:ss

: com.oracle.bigdata.dateformat= "MON-RR-DDHH:MI:SS"

com.oracle.bigdata.fields

データ・ファイルのフィールドの順序を指定します。値は、データ型がオプションであるという1つの例外を除き、ORACLE_HDFScom.oracle.bigdata.fieldsと同じです。データ・ファイルはテキストであるため、テキスト・ファイル・リーダーはフィールドのデータ型を無視し、すべてのフィールドがテキストであるとみなします。データ型はオプションであるため、このパラメータはフィールド名のリストにできます。

com.oracle.bigdata.ignoreblanklines

trueに設定すると、空白行は無視されます。

有効な値: truefalse

デフォルト: false

: com.oracle.bigdata.ignoreblanklines=true

com.oracle.bigdata.ignoremissingcolumns

見つからない列がNULLとして格納されます。

有効な値: true

デフォルト: true

: com.oracle.bigdata.ignoremissingcolumns=true

com.oracle.bigdata.json.ejson

拡張JSONを有効にするかどうかを指定します。

有効な値: truetyesy1falsefnon0

デフォルト: true

: com.oracle.bigdata.jason.ejson=yes

com.oracle.bigdata.json.path

表の行にマップされる一連のネストされたJSON値を識別するJSONパス式。

有効な値: 文字列プロパティ

デフォルト: null

: '$.data[*]'

com.oracle.bigdata.json.unpackarrays

JSONファイルで見つかった配列のボックスを解除するかどうかを指定します。ファイルはJSONオブジェクトの配列で構成されます。ファイル全体が文法的に有効なJSONドキュメントです。このようなファイルの例は、[{"a":1}、{"a":2}、{"a":3}]です。

有効な値: truetyesy1falsefnon0

デフォルト: false

: com.oracle.bigdata.json.unpackarrays=true

com.oracle.bigdata.quote

フィールドの引用符文字を指定します。指定した場合、引用符文字はロード時に削除されます。

有効な値: 文字

デフォルト: NULL (引用符なしを意味します)

例: com.oracle.bigdata.csv.rowformat.quotecharacter='"'

com.oracle.bigdata.rejectlimit

指定した数の行が拒否された後で、操作をエラー終了します。これは、変換エラーでレコードが拒否される場合にのみ適用されます。

有効な値: 数値

デフォルト: 0

例: com.oracle.bigdata.rejectlimit=2

com.oracle.bigdata.removequotes

ソース・ファイル内のフィールドを囲む引用符を削除します。

有効な値: truefalse

デフォルト: false

例: com.oracle.bigdata.removequotes=true

com.oracle.bigdata.csv.skip.header

ファイルの先頭からスキップする行数を指定します。

有効な値: 数値

デフォルト: 0 (指定しない場合)

例: com.oracle.bigdata.csv.skip.header=1

com.oracle.bigdata.timestampformat

ソース・ファイル内のタイムスタンプ書式を指定します。書式オプションAUTOでは、次の書式がチェックされます。

YYYY-MM-DD HH:MI:SS.FFYYYY-MM-DD HH:MI:SS.FF3MM/DD/YYYY HH:MI:SS.FF3

有効な値: auto

デフォルト: yyyy-mm-dd hh24:mi:ss.ff

例: com.oracle.bigdata.timestamptzformat="auto"

com.oracle.bigdata.timestampltzformat

ソース・ファイル内のローカル・タイムゾーン付きタイムスタンプ書式を指定します。書式オプションAUTOでは、次の書式がチェックされます。

DD Mon YYYY HH:MI:SS.FF TZRMM/DD/YYYY HH:MI:SS.FF TZRYYYY-MM-DD HH:MI:SS+/-TZRYYYY-MM-DD HH:MI:SS.FF3DD.MM.YYYY HH:MI:SS TZR

有効な値: auto

デフォルト: yyyy-mm-dd hh24:mi:ss.ff

例: com.oracle.bigdata.timestampltzformat="auto"

com.oracle.bigdata.timestamptzformat

ソース・ファイル内のタイムゾーン付きタイムスタンプ書式を指定します。書式オプションAUTOでは、次の書式がチェックされます。

DD Mon YYYY HH:MI:SS.FF TZRMM/DD/YYYY HH:MI:SS.FF TZRYYYY-MM-DD HH:MI:SS+/-TZRYYYY-MM-DD HH:MI:SS.FF3DD.MM.YYYY HH:MI:SS TZR

有効な値: auto

デフォルト: yyy-mm-dd hh24:mi:ss.ff

例: com.oracle.bigdata.timestamptzformat="auto"

com.oracle.bigdata.trimspaces

フィールドの先頭と末尾の空白を切り捨てる方法を指定します。

有効な値: rtrimltrimnotrimltrimldrtrim

デフォルト: notrim

例: com.oracle.bigdata.trimspaces=rtrim

com.oracle.bigdata.truncatecol

ファイルのデータがフィールドに対して長すぎる場合、このオプションでは、行を拒否したりフィールドをNULLに設定したりするかわりに、フィールドの値を切り捨てます。

有効な値: truefalse

デフォルト: false

: com.oracle.bigdata.truncatecol=true

18.3.4 GATHER_EXTERNAL_TABLE_STATS

これは、外部表(ORACLE_HDFSORACLE_HIVEORACLE_BIGDATA)の統計を手動で収集するためのPL/SQLインタフェースです。

動作とパラメータはdbms_stats.gather_table_statsと同じですが、表の所有者はプロシージャを実行しているセッション・ユーザーである必要があり、このプロシージャを使用して収集された統計は再起動後も保持される点が異なります。このプロシージャは、Hiveから自動的に同期化される外部表では使用できません。

GATHER_TABLE_STATSプロシージャを参照してください。

構文

PROCEDURE gather_external_table_stats( tabname varchar2, partname varchar2 default null, estimate_percent number default dbms_stats.DEFAULT_ESTIMATE_PERCENT, block_sample boolean default FALSE, method_opt varchar2 default dbms_stats.DEFAULT_METHOD_OPT, degree number default dbms_stats.DEFAULT_DEGREE_VALUE, granularity varchar2 default dbms_stats.DEFAULT_GRANULARITY, cascade boolean default dbms_stats.DEFAULT_CASCADE, stattab varchar2 default null, statid varchar2 default null, statown varchar2 default null, no_invalidate boolean default dbms_stats.to_no_invalidate_type(dbms_stats.get_param('NO_INVALIDATE')), stattype varchar2 default 'DATA', force boolean default FALSE, options varchar2 default dbms_stats.DEFAULT_OPTIONS )

PROCEDURE gather_external_table_stats(
    tabname varchar2,
    partname varchar2 default null,
    estimate_percent number default dbms_stats.DEFAULT_ESTIMATE_PERCENT,
    block_sample boolean default FALSE,
    method_opt varchar2 default dbms_stats.DEFAULT_METHOD_OPT,
    degree number default dbms_stats.DEFAULT_DEGREE_VALUE,
    granularity varchar2 default dbms_stats.DEFAULT_GRANULARITY,
    cascade boolean default dbms_stats.DEFAULT_CASCADE,
    stattab varchar2 default null,
    statid varchar2 default null,
    statown varchar2 default null,
    no_invalidate boolean default dbms_stats.to_no_invalidate_type(dbms_stats.get_param('NO_INVALIDATE')),
    stattype varchar2 default 'DATA',
    force boolean default FALSE,
    options varchar2 default dbms_stats.DEFAULT_OPTIONS
  )