DBMS_CLOUD Oracleデータ型からParquetへのマッピング

Oracleデータ型からParquetデータ型へのマッピングについて説明します。

Oracleタイプ Parquet型
BINARY_DOUBLE DBL
BINARY_FLOAT FLT
DATE DATE
NUMBER(p,s) DECIMAL(p、s)
番号(p) デシマル(p)
タイムスタンプ(3) TIMESTAMP_MILLIS
タイムスタンプ(3) TIMESTAMP_MILLIS_UTC
タイムスタンプ(6) TIMESTAMP_MICROS
タイムスタンプ(6) TIMESTAMP_MICROS_UTC
タイムスタンプ(9) TIMESTAMP_NANOS
VARCHAR2(4000) 文字列

NLSセッション・パラメータ

NLSセッション・パラメータNLS_DATE_FORMATNLS_TIMESTAMP_FORMATNLS_TIMESTAMP_TZ_FORMATおよびNLS_NUMERIC_CHARACTERSは、日付、タイムスタンプ、タイムゾーン付きタイムスタンプ書式、および小数マーカー付きタイムスタンプの基数セパレータを、これらの列タイプの表が問い合せられる場合にどのように表示するかを定義します。

また、DBMS_CLOUD.EXPORT_DATAを使用してデータをエクスポートし、Parquet出力を指定すると、Autonomous Databaseはこれらのパラメータの値をNLS_SESSION_PARAMETERS表から読み取ります。Autonomous Databaseでは、これらの値を使用して、Oracleデータ型DATEまたはTIMESTAMPをParquet型に変換します。

NLS_SESSION_PARAMETERSパラメータでは、RR書式マスク(2文字の年指定)がサポートされています。

DBMS_CLOUD.EXPORT_DATAを使用してParquetにデータをエクスポートする場合、年のRR書式マスクはこれらのパラメータではサポートされていません。parquetにエクスポートしようとし、NLS_SESSION_PARAMETERSRR書式マスクを使用するように設定されている場合、アプリケーション・エラーが発生します(RR書式のデフォルト値はNLS_TERRITORYパラメータの値によって異なります)。

パラメータNLS_DATE_FORMATNLS_TIMESTAMP_FORMATまたはNLS_TIMESTAMP_TZ_FORMATのいずれかがRR書式マスクを使用する場合、DBMS_CLOUD.EXPORT_DATAを使用してParquetにデータをエクスポートするには、書式値をサポートされている値に変更する必要があります。たとえば:

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY";
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF';
ALTER SESSION SET  NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM';
値を変更した後、NLS_SESSION_PARAMETERSビューを問い合せて変更を確認できます:
SELECT value FROM NLS_SESSION_PARAMETERS 
       WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT');

NLS_DATE_FORMATが設定されている場合、DATEデータ型の列に適用されます。NLS_TIMESTAMP_FORMATが設定されている場合は、TIMESTAMP datattypeの列に適用されます。NLS_TIMESTAMP_TZ_FORMATが設定されている場合、TIMESTAMP WITH TIME ZONEデータ型の列に適用されます。

詳細は、日時パラメータおよびNLSデータ・ディクショナリ・ビューを参照してください。