データ型のマッピングにより、OceanBaseデータベースからParquet、ORC、MaxCompute(ODPS)、およびCSV形式にデータをエクスポートする際に、元のデータとターゲット形式のデータ型を正確に対応付けることが保証されます。OceanBaseデータベースは、明確なマッピングテーブルを通じて、MySQLおよびOracleの各種データ型とParquet、ORC、MaxCompute(ODPS)がサポートするデータ型を関連付けることで、データのエクスポートプロセスにおいてデータの損失や過剰負荷を防ぎ、その意味を保持します。
説明
ただし、CSVファイルはエクスポート後、文字列型になります。
Parquet形式へのエクスポート
Parquet物理型 |
Parquet論理型 |
Hiveデータ型 |
MySQLテナントのデータ型 |
備考 |
|---|---|---|---|---|
| INT32 | INT(8,TRUE) | TINYINT | TINYINT | |
| INT32 | INT(16,TRUE) | SMALLINT | SMALLINT | |
| INT32 | INT(32,TRUE) | INT | INT | |
| INT64 | INT(64,TRUE) | BIGINT | BIGINT | |
| INT32 | INT(8,FALSE) | TINYINT(上限を超える場合はNULL) | TINYINT UNSIGNED | |
| INT32 | INT(16,FALSE) | SMALLINT(上限を超える場合はNULL) | SMALLINT UNSIGNED | |
| INT32 | INT(32,FALSE) | INT(上限を超える場合はNULL) | INT UNSIGNED | |
| INT64 | INT(64,FALSE) | BIGINT(上限を超える場合はNULL) | BIGINT UNSIGNED | |
| FLOAT | NONE | FLOAT | FLOAT | |
| DOUBLE | NONE | DOUBLE | DOUBLE | |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | DECIMAL | DECIMAL, DECIMAL UNSIGNED | precisionとscaleを指定する必要があります |
| BYTE_ARRAY | STRING | CHAR | CHAR, BINARY | Parquetのstring型はすべてutf8エンコードです |
| BYTE_ARRAY | STRING | VARCHAR | VARCHAR, VARBINARY | |
| BYTE_ARRAY | STRING | STRING | TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | |
| INT64 | TIMESTAMP(is_adjusted_to_utc=true, parquet::LogicalType::TimeUnit::MICROS) | TIMESTAMP | TIMESTAMP | |
| INT64 | TIMESTAMP(is_adjusted_to_utc=false, parquet::LogicalType::TimeUnit::MICROS) | TIMESTAMP | DATETIME | |
| INT32 | DATE | DATE | DATE | |
| INT64 | TIME | \ | TIME | |
| INT32 | INT(8,FALSE) | \ | YEAR |
ORC形式へのエクスポート
ORC型 |
Hiveデータ型 |
MySQLテナントのデータ型 |
|---|---|---|
| BYTE | TINYINT | TINYINT |
| SHORT | SMALLINT | SMALLINT |
| INT | INT | INT |
| LONG | BIGINT | BIGINT |
| FLOAT | FLOAT | FLOAT |
| DOUBLE | DOUBLE | DOUBLE |
| DECIMAL | DECIMAL | DECIMAL |
| CHAR | CHAR | CHAR |
| VARCHAR | VARCHAR | VARCHAR |
| STRING | STRING | TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT |
| BINARY | BINARY | TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB/BINARY/VARBINARY |
| DATE | DATE | DATE |
| TIMESTAMP | TIMESTAMP | DATETIME/TIMESTAMP |
MaxCompute(ODPS)形式へのエクスポート
MaxCompute(ODPS) データ型 |
MySQLテナントのデータ型 |
備考 |
|---|---|---|
| BOOLEAN | TINYINT (0はエラー、1は正解を表す) | |
| TINYINT | TINYINT | |
| SMALLINT | SMALLINT | |
| INT | INT | |
| BIGINT | BIGINT | |
| FLOAT | FLOAT | ユーザーが精度を指定することはできません。指定した場合、エラーが発生します。 |
| DOUBLE | DOUBLE | ユーザーが精度を指定することはできません。指定した場合、エラーが発生します。 |
| DECIMAL | DECIMAL(M,D) | ユーザーはMとDを明示的に指定する必要があります。MaxCompute(ODPS)上のP/Sと一致させる必要があります。一致しない場合、実行時にエラーが発生します。 |
| CHAR (最大長255バイト、不足分はスペースで補う) | CHAR (長さ0~255) | ユーザーが指定するlengthは、MaxCompute(ODPS)上の対応する列のlength以上である必要があります。一致しない場合、実行時にエラーが発生します。 |
| VARCHAR(最大長65535) | VARCHAR (長さは0から262144の間を指定可能) | ユーザーが指定するlengthは、MaxCompute(ODPS)上の対応する列のlength以上である必要があります。一致しない場合、実行時にエラーが発生します。 |
| STRING(長さ制限8MB) | VARCHAR/TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT(MEDIUMTEXTは最大長16,777,215バイトのTEXT型で、文字セットを持つ) | ユーザーはMaxCompute(ODPS)上のSTRINGデータの最大長を把握し、この情報に基づいてマッピング先の型を決定する必要があります。OceanBaseデータベースの型の長さがMaxCompute(ODPS)データを収納するのに不十分な場合、実行時にエラーが発生します。 |
| BINARY (長さ制限8MB) | VARBINARY/TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB(BLOB値はバイナリ文字列(バイト文字列)と見なされ、バイナリ文字セットとソート規則を持ちます。比較とソートは列値内のバイトの数値に基づいて行われます。MEDIUMBLOBは最大長16,777,215バイトのBLOB型です) | ユーザーはMaxCompute(ODPS)上のBINARYデータの最大長を把握し、この情報に基づいてマッピング先の型を決定する必要があります。OceanBaseデータベースの型の長さがMaxCompute(ODPS)データを収納するのに不十分な場合、実行時にエラーが発生します。 |
| TIMESTAMP (UTC時間をナノ秒単位で9桁小数点以下で格納するが、表示時は現在のタイムゾーンに変換する) | TIMESTAMP | TIMESTAMP(6)のみサポートしており、それ以外はサポートしていません。TIMESTAMP型の精度は小数点以下6桁が最高であるため、精度損失が発生します。 |
| TIMESTAMP_NTZ(UTC時間をナノ秒単位で9桁小数点以下で格納するが、タイムゾーンとは無関係) | DATETIME | DATETIME(6)のみサポートしており、それ以外はサポートしていません。TIMESTAMPはタイムゾーンに依存するため、サポートされていません。 |
| DATE(形式はyyy-mm-dd、値の範囲は0001-01-01~9999-12-31) | DATE | DATEのみサポートしており、それ以外はサポートしていません。 |
| DATETIME(ミリ秒単位で、小数点以下3桁、値の範囲:0001-01-01 00:00:00.000~9999-12-31 23:59:59.999) | DATETIME | DATETIME(3)以上の小数点以下の桁数、例えばDATETIME(4)/DATETIME(5)/DATETIME(6)のみサポートしており、それ以外はサポートしていません。 |
| ARRAY | ARRAY | 詳細については、下記のOceanBaseデータベースのARRAY型とODPSのマッピング関係を参照してください。 |
| MAP | 現在はサポートされていません | 現在はサポートされていません |
| STRUCT | 現在はサポートされていません | 現在はサポートされていません |
| JSON | JSON | 現在はサポートされていません |
OceanBaseデータベースのARRAY型からODPSへのマッピング関係
OceanBaseデータベースでサポートされているARRAY型からODPS型へのマッピング関係は以下のとおりです。
OceanBaseデータベース |
ODPS |
|---|---|
| ARRAY(tinyint) | ARRAY<tinyint> |
| ARRAY(tinyint) | ARRAY<boolean> |
| ARRAY(smallint) | ARRAY<smallint> |
| ARRAY(int) | ARRAY<int> |
| ARRAY(bigint) | ARRAY<bigint> |
| ARRAY(float) | ARRAY<float> |
| ARRAY(double) | ARRAY<double> |
| ARRAY(varchar) | ARRAY<varchar> |
| ARRAY(varchar) | ARRAY<string> |
| ARRAY(array()) | ARRAY<array<>> |