DBMS_CLOUDパッケージ・フォーマット・オプション

DBMS_CLOUDのformat引数では、ソース・ファイルのフォーマットを指定します。

format引数を指定するには:

format => '{"format_option" : “format_value” }'  

および:

format => json_object('format_option' value 'format_value'))

例:

format => json_object('type' VALUE 'CSV')

複数のフォーマット・オプションを指定するには、値を","で区切ります。

次に例を示します。

format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 
                           'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true', 'logretention' value 7)
ノート

Avro、ORCまたはParquetフォーマット・オプションについては、DBMS_CLOUD Avro、ORCまたはParquet用のパッケージ・フォーマット・オプションを参照してください。

「フォーマット・オプション」列に示されているように、format typeがJSONの場合は、DBMS_CLOUD.COPY_COLLECTIONまたはDBMS_CLOUD.COPY_DATAで限定されたフォーマット・オプション・セットが有効です。

書式オプション 説明 構文

access_protocol

AWSやOCI Object StorageなどのApache Iceberg表のタイプと、データ・カタログや直接メタデータURIからの情報など、外部表の作成に使用される情報を指定します。

access_protocol構文の詳細は、Apache IcebergのCREATE_EXTERNAL_TABLEプロシージャを参照してください。

blankasnull

trueに設定すると、スペースで構成されたフィールドはnullとしてロードされます。

blankasnull : true

デフォルト値: False

characterset

format JSONおよびCOPY_DATAで有効

ソース・ファイルのキャラクタ・セットを指定します

characterset: string

デフォルト値: データベース文字セット

columnpath

format JSONおよびCOPY_DATAでのみ使用

JSONレコードから抽出する必要があるフィールドに対応するJSONパス式の配列。配列内の各JSONパス式は、SQL/JSONパス式で説明されているルールに従う必要があります。

Only use with format JSON and DBMS_CLOUD.COPY_DATA.

文字列形式で表されるjsonパス式のJSON配列。例: 'columnpath' value '["$.WEATHER_STATION_ID", "$.WEATHER_STATION_NAME"]'

compression

JSONデータで有効なオプション

ソース・ファイルの圧縮タイプを指定します。

ZIPアーカイブ形式はサポートされていません。

autoを指定すると、圧縮タイプgzip、zlib、bzip2がチェックされます。

compression: auto|gzip|zlib|bzip2

デフォルト値: 圧縮しないことを意味するNULL値。

conversionerrors

データ型変換エラーのために行が拒否された場合、関連する列がnullとして格納されるか、行が拒否されます。

conversionerrors : reject_record | store_null

デフォルト値: reject_record

dateformat

ソース・ファイル内の日付フォーマットを指定します。フォーマット・オプションAUTOを指定すると、次のフォーマットが検索されます:

J 
MM-DD-YYYYBC 
MM-DD-YYYY 
YYYYMMDD HHMISS 
YYMMDD HHMISS 
YYYY.DDD 
YYYY-MM-DD

dateformat : string

デフォルト値: データベースの日付フォーマット

delimiter

フィールド・デリミタを指定します

特殊文字をデリミタとして使用するには、その文字のASCIIコードのHEX値を指定します。たとえば、次のようにTAB文字をデリミタとして指定します:

format => json_object('delimiter' value 'X''9''')

delimiter : character

デフォルト値| (パイプ文字)

detectfieldorder

外部データ・ファイルのフィールドが表内の列とは異なる順序になるように指定します。各外部データ・ファイルの最初の行を使用してフィールドの順序を検出し、表の列にマップします。外部データ・ファイルのフィールド名は、表列の名前と大/小文字を区別しない方法で比較されます。

この形式オプションは、次の手順に適用されます。

  • DBMS_CLOUD.COPY_DATA

  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

detectfieldorderの制限事項:

  • データファイルのフィールド名は、最初のレコード行に表示する必要があり、フィールド名の間に空白を含めることはできません。

  • フィールド名レコードのフィールド・デリミタは、ファイル内のデータのフィールド・デリミタと同じである必要があります。

  • 引用符で囲まれたフィールド名はサポートされていません。データファイルのフィールド名は、大/小文字を区別せずに、外部表の列の名前と比較されます。

  • 埋込みフィールド・デリミタは、フィールド名には使用できません。

  • 表の列数がデータファイルのフィールド数と一致している必要があります。

  • このフォーマット・オプションは、BigdataまたはOracle Data Pump形式にはバイナリ・ファイル形式の正確な列メタデータ情報があるため、適用できません。

    テキスト形式(CSV、JSON、ParquetまたはXML)では、最初の行にフィールド名が含まれている場合に、この自動フィールド順序検出を利用できます。

詳細は、フィールド名およびALL FILESの説明を参照してください。

detectfieldorder: true

デフォルト値: false

enablelogs

フォーマット・オプションenablelogsは、次のDBMS_CLOUDプロシージャで使用されます。

  • COPY_DATA

  • COPY_COLLECTION

  • EXPORT_DATA

enablelogsはブール値を指定します。TRUEに設定すると、ログが生成されます。FALSEに設定すると、ログは生成されません。

たとえば:

format => JSON_OBJECT('enablelogs' value FALSE)

enablelogs: false

デフォルト値: true

encryption

フォーマット・オプションencryptionは、オブジェクト・ストアとの間でデータをエクスポートおよびインポートする暗号化および復号化オプションを指定します。

encryptionを使用して、暗号化および復号化する次のパラメータを指定します。

  • user_defined_function: 指定したBLOB (バイナリ・ラージ・オブジェクト)を復号化または暗号化するための完全修飾ユーザー定義関数を指定します。復号化または暗号化されたBLOBを返します。user_defined_functionは、encryptionの他のパラメータと相互に排他的です。

    たとえば、ADMIN.DECRYPTION_CALLBACKです。

  • type: 復号化または暗号化するDBMS_CRYPTO暗号化アルゴリズムを指定します。

    typeは、ブロック暗号アルゴリズム+ブロック暗号連鎖修飾子+ブロック暗号パディング修飾子形式の値を受け入れます。

    サポートされているブロック暗号アルゴリズムは次のとおりです。

    • DBMS_CRYPTO.ENCRYPT_AES256

    サポートされているブロック暗号連鎖修飾子は次のとおりです。

    • DBMS_CRYPTO.CHAIN_CBC

    • DBMS_CRYPTO.CHAIN_CFB

    • DBMS_CRYPTO.CHAIN_ECB

    • DBMS_CRYPTO.CHAIN_OFB

    サポートされているブロック暗号パディングの修飾子は次のとおりです。

    • DBMS_CRYPTO.PAD_PKCS5

    • DBMS_CRYPTO.PAD_NONE

    • DBMS_CRYPTO.PAD_ZERO

    • DBMS_CRYPTO.PAD_ORCL

  • credential_name: 暗号化キーを格納するために使用される資格証明を指定します。

これらのパラメータの値を指定しない場合、ブロック暗号連鎖修飾子およびブロック暗号埋込み修飾子の値は、デフォルトでDBMS_CRYPTO.CHAIN_CBCおよびDBMS_CRYPTO.PAD_PKCS5に設定されます。

フォーマット・オプションencryptionは、次のDBMS_CLOUDプロシージャで使用されます。
  • これらのプロシージャで復号化するパラメータを渡すために使用します。

    • DBMS_CLOUD.COPY_DATA

    • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

    • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

    • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

      DBMS_CLOUD.CREATE_HYBRID_PART_TABLEの場合、このオプションはオブジェクト・ストレージ・ファイルにのみ適用されます。

    • DBMS_CLOUD.COPY_COLLECTION

  • 次の手順で暗号化するパラメータを渡すために使用します。

    • DBMS_CLOUD.EXPORT_DATA

次に例を示します。

format => JSON_OBJECT('encryption' value json_object ('type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 'credential_name' value 'ENCRYPTION_CRED'))
encryption:value

valueは、暗号化の追加パラメータを提供するJSON文字列です:

type: value

暗号化タイプを指定します。

credential_name: value

暗号化キーを格納するために使用される資格証明を指定します。

user_defined_function: value

指定されたBLOB (バイナリ・ラージ・オブジェクト)を復号化または暗号化するための完全修飾ユーザー定義関数を指定します。

endquote

データは、quoteおよびendquoteで指定された2つのデリミタで囲むことができます。指定した場合、quoteおよびendquote文字はロード中に削除されます。

たとえば:

format => JSON_OBJECT(‘quote’ value ‘(’, ‘endquote’ value ‘)’)

endquote:character

デフォルト値: endquoteがないことを意味するNULL。

escape

文字"\"は、指定するとエスケープ文字として使用されます。

escape : true

デフォルト値: false

ignoreblanklines

JSONデータで有効なオプション

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

ignoreblanklines : true

デフォルト値: False

ignoremissingcolumns

field_listの列がソース・ファイルの列より多い場合、余分な列はnullとして格納されます。

ignoremissingcolumns : true

デフォルト値False

jsonpath

COPY_COLLECTIONでのみ使用

ロードするドキュメントを指定するJSONパス。

このオプションは、DBMS_CLOUD.COPY_COLLECTIONを含むJSONコレクション・データでのみ有効です。

jsonpath: string

デフォルト値: Null

keyassignment

COPY_COLLECTIONでのみ使用

新しいコレクションをモンゴ互換コレクションとして作成するか、SODAコレクションとして作成するかを指定します。

値がembedded_oidに設定されている場合、新しいコレクションはモンゴ互換のコレクションとして作成されます。

デフォルトでは、このパラメータは設定されていません。つまり、新しいコレクションがSODAコレクションとして作成されます。

keyassignment: embedded_oid

デフォルト: keyassignmentが設定されていません

keypath

COPY_COLLECTIONでのみ使用

ロードするデータの属性を'_id'値として指定します。

keypathを指定する場合は、keyassignment値もembedded_oidとして指定する必要があります。

'_id'値としてパスの値を選択するには、値をパス('$.mykey'など)に設定します。

このパラメータはオプションであり、モンゴ互換のコレクションへのロードにのみ有効です。

指定しない場合、Oracleは12バイトの一意のシステムIDを生成し、ロードするデータに'_id'属性がまだ存在しない場合、それを'_id'属性として移入します。

keypath: string

デフォルト: keypathは設定されていません。

keypathが設定されている場合、デフォルトのstring値はNULLです。

language

ロケール依存の情報を導出できる言語名(FRENCHなど)を指定します。

language: string

デフォルト値: Null

Oracleでサポートされている言語のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』ロケール・データに関する項を参照してください。

logdir

logfile_tableまたはbadfile_tableファイルが保存されるディレクトリ・オブジェクト名を決定する文字列値を指定します。

デフォルトでは、logdirは大文字と小文字を区別しませんが、指定された値が二重引用符で囲まれている場合は大文字と小文字が保持されます。

たとえば、次のとおりです。

format => JSON_OBJECT ('logdir' value 'test_log')

上の例で指定したlogdirフォーマット・オプションでは、logfile_tableまたはbadfile_tableファイルがTEST_LOGディレクトリ・オブジェクトに保存されます。

format => JSON_OBJECT ('logdir' value '"test_log"')

上の例で指定したlogdirフォーマット・オプションでは、logfile_tableまたはbadfile_tableファイルがtest_logディレクトリ・オブジェクトに保存されます。

logdir: string

デフォルト値: DATA_PUMP_DIR

logprefix

logfile_tableおよびbadfile_tableファイルの接頭辞を決定する文字列値を指定します。

ログ表名の形式は、logprefix$operation_idです

デフォルトでは、logprefixは大文字ですが、指定された値が二重引用符で囲まれている場合は大/小文字が保持されます。

たとえば、次のとおりです。

format => JSON_OBJECT ('logprefix' value 'TEST')

ログ・ファイルでは、TEST$2_LOGTEST$2_BADのように、TEST接頭辞が使用されます。

logprefix: string

デフォルト値: COPY

logretention

logfile_tableおよびbadfile_tableファイルが保持される、正の整数の期間を日数で指定します。

有効な値: 0から99999

たとえば、次のとおりです。

format => JSON_OBJECT ('logretention' value 7)

logretention: number

デフォルトの値: 2

maxdocsize

このオプションは、JSONデータでのみ有効です

JSONドキュメントの最大サイズ。

maxdocsize: number

デフォルト値: 1メガバイト

許容される最大値: 2ギガバイト

numericcharacters

グループ・セパレータおよび小数点文字として使用する文字を指定します。

decimal_character: 小数点文字で数値の整数部分と小数部分を区切ります。

group_separator: グループ・セパレータは、整数グループ(1,000、100万、10億など)を区切ります。

numericcharacters: 'decimal_character group_separator'

デフォルト値: ".,"

詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLS_NUMERIC_CHARACTERSに関する項を参照してください。

numberformat

数値フォーマット・モデルを指定します。数値フォーマット・モデルを使用すると、数値が指定した有効桁数に丸められます。数値フォーマット・モデルは、1つ以上の数値フォーマット要素で構成されます。

これは、numericcharactersと組み合せて使用されます。

numberformat: number_format_model

デフォルト値: NLS_TERRITORYパラメータの設定から導出されます

詳細は、『SQL言語リファレンス』数値フォーマット・モデルに関する項を参照してください。

partition_columns

フォーマット・オプションpartition_columnsDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEとともに使用して、データ・ファイルのタイプ(構造化または非構造化)に応じて、パーティション列がファイル・パスから導出されるときのパーティション列の列名とデータ型を指定します:

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_listパラメータが含まれ、データ・ファイルが非構造化(CSVテキスト・ファイルなど)の場合、partition_columnsにはデータ型は含まれません。たとえば、このタイプのpartition_columnsの指定では、次のようなフォーマットを使用します:

    '"partition_columns":["state","zipcode"]'

    このデータ型は、DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_listパラメータで指定されるため、必須ではありません。

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_listパラメータが含まれず、データ・ファイルが構造化(Avro、ORC、Parquetファイルなど)の場合、partition_columnsオプションにはデータ型が含まれます。たとえば、partition_columnsの指定を次に示します:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

データ・ファイルが構造化されておらず、type副句がpartition_columnsで指定されている場合、type副句は無視されます。

ハイブ形式に基づかないオブジェクト名の場合、partition_columnsで指定された列の順序は、file_uri_listのオブジェクト名に表示される順序と一致する必要があります。

 

quote

フィールドの引用符文字を指定します。quote文字は、指定するとロード中に削除されます。

quote: character

デフォルト値: 引用符なしを意味するNULL

recorddelimiter

JSONデータで有効なオプション

レコード・デリミタを指定します。

デフォルトでは、DBMS_CLOUDは、デリミタとしての正しい改行文字の自動検出を試行します。まず、ファイルでWindows改行文字\r\nが検索されます。Windowsの復帰改行文字が見つかった場合、それがプロシージャのすべてのファイルのレコード・区切り文字として使用されます。Windows改行文字が見つからない場合は、UNIX/Linux改行文字"\n"が検索され、見つかった場合は"\n"がプロシージャのすべてのファイルのレコード・区切り文字として使用されます。

デフォルトの動作をオーバーライドする場合は、次のように、この引数を明示的に指定します:

format => json_object('recorddelimiter' VALUE '''\r\n''')

レコード・デリミタがない場合は、入力ファイルにないrecorddelimiterを指定できます。たとえば、recorddelimiterの値として制御文字0x01 (SOH)を指定し、recorddelimiter値を"0x''01''"に設定します(この文字はJSONテキストには使用されません)。たとえば:

format => '{"recorddelimiter" : "0x''01''"}'

recorddelimiterは、プロシージャ・コールごとに設定されます。デフォルト値のdetected newlineを使用している場合、すべてのファイルで同じレコード・デリミタが使用されます(検出された場合)。

recorddelimiter: character

デフォルト値: detected newline

regexuri

フォーマット・オプションregexuriは、次のDBMS_CLOUDプロシージャで使用されます。

  • COPY_COLLECTION

  • COPY_DATA

  • CREATE_EXTERNAL_TABLE

  • CREATE_EXTERNAL_PART_TABLE

  • CREATE_HYBRID_PART_TABLE

regexuriの値がTRUEに設定されている場合、クラウド・ソース・ファイルURIのファイル名にワイルドカードおよび正規表現を使用できます。

regexuriパラメータがFALSEに設定されている場合、文字"*"および"?"はワイルドカード文字とみなされます。regexuriパラメータがTRUEに設定されている場合、文字"*"および"?"は指定された正規表現パターンの一部です。

正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致はREGEXP_LIKE関数によって実行されるものと同じです。ディレクトリ名では正規表現パターンはサポートされていません。

外部表の場合、このオプションは、オブジェクト・ストレージのファイルに作成された表でのみサポートされます。

たとえば:

format => JSON_OBJECT('regexuri' value TRUE)

REGEXP_LIKE条件の詳細は、REGEXP_LIKE条件を参照してください。

regexuri: True

デフォルト値: False

rejectlimit

指定した数の行が拒否されると、操作はエラーになります。

rejectlimit: number

デフォルトの値: 0

removequotes

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

removequotes: true

デフォルト値: False

skipheaders

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

skipheaders: number

デフォルト値: 指定しない場合は0、値なしで指定した場合は1

territory

入力データ特性をさらに判別するためのテリトリ名を指定します。

territory: string

デフォルト値: Null

Oracleでサポートされているテリトリのリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』ロケール・データに関する項を参照してください。

timestampformat

ソース・ファイル内のタイムスタンプ・フォーマットを指定します。フォーマット・オプションAUTOを指定すると、次のフォーマットが検索されます:

YYYY-MM-DD HH:MI:SS.FF 
YYYY-MM-DD HH:MI:SS.FF3
YYYY-MM-DD HH24:MI:SS.FF3
MM/DD/YYYY HH:MI:SS.FF3

timestampformat : string

デフォルト値: データベースのタイムスタンプ書式

文字列には、「$」などのワイルドカード文字を含めることができます。

timestampltzformat

ソース・ファイル内のローカル・タイムゾーン付きタイムスタンプ・フォーマットを指定します。フォーマット・オプションAUTOを指定すると、次のフォーマットが検索されます:

DD Mon YYYY HH:MI:SS.FF TZR 
MM/DD/YYYY HH:MI:SS.FF TZR 
YYYY-MM-DD HH:MI:SS+/-TZR 
YYYY-MM-DD HH:MI:SS.FF3 
DD.MM.YYYY HH:MI:SS TZR

timestampltzformat : string

デフォルト値: ローカル・タイムゾーン・フォーマットのデータベース・タイムスタンプ

timestamptzformat

ソース・ファイル内のタイムゾーン付きタイムスタンプ・フォーマットを指定します。フォーマット・オプションAUTOを指定すると、次のフォーマットが検索されます:

DD Mon YYYY HH:MI:SS.FF TZR 
MM/DD/YYYY HH:MI:SS.FF TZR 
YYYY-MM-DD HH:MI:SS+/-TZR 
YYYY-MM-DD HH:MI:SS.FF3 
DD.MM.YYYY HH:MI:SS TZR

timestamptzformat: string

デフォルト値: タイムゾーン形式のデータベース・タイムスタンプ

trimspaces

フィールドの先頭と末尾のスペースをどのように切り捨てるかを指定します。

trim_specの説明を参照してください。

trimspaces: rtrim| ltrim| notrim| lrtrim| ldrtrim

デフォルト値: notrim

truncatecol

ファイル内のデータがフィールドに対して長すぎる場合、このオプションによって、行を拒否せずにフィールドの値を切り捨てます。

truncatecol:true

デフォルト値: False

type

ソース・ファイル・タイプを指定します。

field_definitions句CSVの説明を参照してください

typedatapumpである場合、他の有効なフォーマット・オプションはrejectlimitのみです。

If the type is datapump, then the only Object Stores supported are Oracle Cloud Infrastructure Object Storage and Oracle Cloud Infrastructure Object Storage Classic.

typeavroorcまたはparquetについては、DBMS_CLOUD Avro、ORCまたはParquet用のパッケージ・フォーマット・オプションを参照してください。

DBMS_CLOUD.COPY_COLLECTIONを含むJSONデータの場合、typeには、json (デフォルト)およびejsonという2つの有効な値があります。DBMS_CLOUD.COPY_COLLECTIONの場合、これらの値はどちらも入力がJSONデータであることを指定します。値ejsonを指定すると、テキストのJSON入力データの拡張オブジェクトがネイティブのバイナリJSONコレクションのスカラーJSON値に変換されます。値jsonを指定すると、この変換は実行されず、入力データ内のすべてのオブジェクトがバイナリJSON形式に変換されます。

DBMS_CLOUD.COPY_DATAを含むJSONデータの場合、typeには1つの有効な値: jsonがあります。この値は、入力がJSONデータであることを指定します。

type: csv|csv with embedded|csv without embedded |avro||datapump|orc|parquet

ノート

すべてのDBMS_CLOUDプロシージャがこれらのタイプのすべてをサポートしているわけではありません。

csvは、csv without embeddedと同じです。

デフォルト値: Null

JSONデータの場合、DBMS_CLOUD.COPY_COLLECTIONで使用する2つの有効なtype値: json|ejson。この場合、デフォルト値はjsonです。DBMS_CLOUD.COPY_DATAを含むJSONデータの場合、jsonのみ有効です。

unpackarrays

COPY_COLLECTIONでのみ使用

trueに設定すると、ロードされたドキュメントが配列の場合、配列の内容は配列自体ではなくドキュメントとしてロードされます。これは、トップレベルの配列にのみ適用されます。

trueに設定すると、配列全体が単一のドキュメントとして挿入されます。

このオプションは、DBMS_CLOUD.COPY_COLLECTIONを含むJSONコレクション・データでのみ有効です。

unpackarrays: true

デフォルト値: False