データ型のマッピングは、OceanBaseデータベースからParquet、ORC、MaxCompute(ODPS)形式にデータをエクスポートする際に、元のデータとターゲット形式のデータ型を正確に対応付けることを保証します。OceanBaseデータベースV4.3.5バージョンでは、明確なマッピングテーブルを通じて、MySQLおよびOracleの各種データ型とParquet、ORC、MaxCompute(ODPS)がサポートするデータ型を関連付けることで、データのエクスポートプロセスにおいてデータの損失や過負荷を防ぎ、その意味を変更しないようにしています。
説明
ただし、CSVファイルはエクスポート後に文字列型になります。
Parquet形式でのエクスポート
| Parquet物理型 | Parquet論理型 | Hiveデータ型 | Oracleテナントのデータ型 | 備考 |
|---|---|---|---|---|
| FLOAT | NONE | FLOAT | BINARY_FLOAT | |
| DOUBLE | NONE | DOUBLE | BINARY_DOUBLE | |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | DECIMAL | NUMBER | precisionとscaleを指定する必要があります |
| BYTE_ARRAY | STRING | CHAR | CHAR | Parquetのstring型はすべてutf8エンコーディングです |
| BYTE_ARRAY | STRING | VARCHAR | VARCHAR2 | |
| BYTE_ARRAY | STRING | STRING | RAW, BLOB, CLOB | |
| INT64 | TIMESTAMP(is_adjusted_to_utc=false, parquet::LogicalType::TimeUnit::MICROS) | TIMESTAMP | DATE | |
| INT96 | NONE | TIMESTAMP | TIMESTAMP, TIMESTAMP WITH LOCAL TIME ZONE | |
ORC形式でのエクスポート
| ORC型 | Hiveデータ型 | Oracleテナントのデータ型 |
|---|---|---|
| FLOAT | FLOAT | BINARY_FLOAT |
| DOUBLE | DOUBLE | BINARY_DOUBLE |
| DECIMAL | DECIMAL | NUMBER |
| CHAR | CHAR | CHAR |
| VARCHAR | VARCHAR | VARCHAR2 |
| STRING | STRING | CLOB |
| BINARY | BINARY | BLOB/RAW |
| TIMESTAMP | TIMESTAMP | DATE/TIMESTAMP/TIMESTAMP WITH LOCAL TIME ZONE |
MaxCompute(ODPS)形式でのエクスポート
| MaxCompute(ODPS)データ型 | Oracleテナントのデータ型 |
|---|---|
| BOOLEAN | NUMBER(1,0) |
| TINYINT | NUMBER(3,0) |
| SMALLINT | NUMBER(5,0) |
| INT | NUMBER(10,0) |
| BIGINT | NUMBER(20,0) |
| FLOAT | BINARY_FLOAT |
| DOUBLE | BINARY_DOUBLE |
| DECIMAL | NUMBER(P,S) (ユーザーにPとSを明示的に指定させる) |
| CHAR (最大長255バイト、不足分はスペースで補う) | CHAR |
| VARCHAR(最大長65535) | VARCHAR |
| STRING(長さ制限8MBバイト) | VARCHAR/CLOB |
| BINARY (長さ制限8MB) | RAW BLOB: データベース内の大規模なバイナリオブジェクトを格納するために使用され、BLOBオブジェクトは文字セットの意味を持たないビットストリームと見なすことができます。バイトの長さ上限は536870910バイトです |
| TIMESTAMP (UTC時間をナノ秒単位で小数点以下9桁まで格納し、表示時には現在のタイムゾーンに変換する) | TIMESTAMP(9) WITH LOCAL TIME ZONE |
| TIMESTAMP_NTZ(UTC時間をナノ秒単位で小数点以下9桁まで格納し、タイムゾーンとは無関係) | TIMESTAMP |
| DATE(形式はyyy-mm-dd、値の範囲は0001-01-01~9999-12-31) | DATE |
| DATETIME(ミリ秒単位で正確、小数点以下3桁、値の範囲:0001-01-01 00:00:00.000~9999-12-31 23:59:59.999) | TIMESTAMP |
| ARRAY | 現在サポートされていません |
| MAP | 現在サポートされていません |
| STRUCT | 現在サポートされていません |
| JSON | 現在サポートされていません |