データ型のマッピングは、OceanBaseデータベースからParquet、ORC、MaxCompute(ODPS)、CSV形式にデータをエクスポートする際に、元のデータとターゲット形式のデータ型を正確に対応付けることを保証します。OceanBaseデータベースV4.3.5バージョンでは、明確なマッピングテーブルを通じて、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(形式はyyyy-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 |
現在サポートされていません |
現在サポートされていません |
| MAP |
現在サポートされていません |
現在サポートされていません |
| STRUCT |
現在サポートされていません |
現在サポートされていません |
| JSON |
JSON |
現在サポートされていません |
関連ドキュメント
SELECT INTO