Hologres のデータ型はPostgreSQLのデータ型と互換性があります。このトピックでは、Hologres でサポートされているデータ型と配列型について説明します。
データ型
Hologres のデータ型は、PostgreSQL のデータ型のサブセットです。次の表に、Hologres でサポートされているデータ型を示します。
データ型 | サポートされているバージョン | 長さ | 説明 | 値の範囲 | 例 |
INTEGER (INT または INT4) | Hologres のすべてのバージョン | 4 バイト | 一般的な整数。 | -2147483648 ~ 2147483647 | 2147483647 |
BIGINT (INT8) | Hologres のすべてのバージョン | 8 バイト | 広い範囲の整数。 | -9223372036854775808 ~ 9223372036854775807 | 9223372036854775807 |
BOOLEAN (BOOL) | Hologres のすべてのバージョン | 1 バイト | ブール型データ型。 |
| True。 |
REAL (FLOAT4) | Hologres のすべてのバージョン | 4 バイト | データの精度は可変です。結果は不正確です。 説明 PostgreSQL では、FLOAT の精度を指定しない場合、デフォルトで DOUBLE PRECISION (FLOAT8) データ型が使用されます。 | 最大 6 桁の有効桁数を持つ数値 | 123.123 |
DOUBLE PRECISION (FLOAT8) | Hologres のすべてのバージョン | 8 バイト | データの精度は可変です。結果は不正確です。 | 最大 15 桁の有効桁数を持つ数値 | 123.123456789123 |
TEXT | Hologres のすべてのバージョン | 可変長 | 可変長の文字列。 VARCHAR(n) および CHAR(n) データ型と比較して、TEXT データ型はより柔軟です。 VARCHAR(n) および CHAR(n) データ型の代わりに TEXT データ型を使用することをお勧めします。 | なし | abcdefg |
TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ) | Hologres のすべてのバージョン | 8 バイト | タイムゾーン付きのタイムスタンプ。値はミリ秒単位まで正確です。 説明 標準の PostgreSQL は、+ 記号または - 記号と、 | 紀元前 4713 年~西暦 294276 年 | 2004-10-19 10:23:54+02 |
DECIMAL (NUMERIC) | Hologres のすべてのバージョン | 可変長 | 精度とスケールを指定する必要があります。
| 整数部と小数部を含めて最大 38 桁の数値 | DECIMAL(38, 10) |
DATE | Hologres V0.8 以降 | 4 バイト | 値は日単位まで正確です。 | 紀元前 4713 年~西暦 5874897 年 | 2004-10-19 |
TIMESTAMP | Hologres V0.8 以降 | 8 バイト | タイムゾーンなしのタイムスタンプ。値はマイクロ秒単位まで正確です。 | 紀元前 4713 年~西暦 5874897 年 | 2020-01-01 01:01:01.123456 |
CHAR(n) | Hologres V0.8 以降 | n 文字の固定長の文字列。 | データサイズは 1 GB 以下である必要があります。 | 固定長の文字列 |
|
VARCHAR(n) | Hologres V0.8 以降 | n 文字を超えない可変長の文字列。 | データサイズは 1 GB 以下である必要があります。 | 文字数が制限された可変長の文字列 | abcdefg |
SERIAL (自動インクリメントシリアル) | Hologres V0.8 以降 | 詳細については、「PostgreSQL SERIAL」をご参照ください。 | なし。 | なし | なし |
SMALLINT | Hologres V0.9 以降 | 2 バイト | 狭い範囲の整数。 | -32768 ~ +32767 | 32767 |
JSON and JSONB | Hologres V0.9 以降 | 詳細については、「JSON データ型」をご参照ください。 | なし。 | なし | なし |
BYTEA | Hologres V0.9 以降 | 可変長。詳細については、「バイナリデータ型」をご参照ください。 | 可変長のバイナリ文字列。 | データサイズ 1 GB 以下 | なし |
RoaringBitmap | Hologres V0.10 以降 | 可変長。詳細については、「Roaring bitmap 関数」をご参照ください。 | 定数配列のビットマップ計算をサポートする、INT データ型の効率的な配列。 | なし | なし |
RoaringBitmap64 | Hologres V3.1 以降 | 可変長。詳細については、「Roaring bitmap 関数」をご参照ください。 | 定数配列のビットマップ計算をサポートする BIGINT データ型の効率的な配列。 | なし | なし |
BIT(n) | Hologres V0.9 以降 | n ビット長のバイナリ文字列。 | 固定長のバイナリ文字列。 | データサイズ 1 GB 以下 | なし |
VARBIT(n) | Hologres V0.9 以降 | n ビットを超えない可変長のバイナリ文字列。 | ビット数が制限されたバイナリ文字列。 | データサイズ 1 GB 以下 | なし |
INTERVAL | Hologres のすべてのバージョン | 16 バイト | なし。 | -178000000 年~ 178000000 年 | interval '1 year' |
TIMETZ | Hologres V0.9 以降 | 12 バイト | タイムゾーン付きの時刻値。値はマイクロ秒単位まで正確です。 | 00:00:00 ~ 24:00:00 | 12:00:00+08 |
TIME | Hologres V0.9 以降 | 8 バイト | タイムゾーンなしの時刻値。値はマイクロ秒単位まで正確です。 | 00:00:00 ~ 24:00:00 | 12:00:00 |
INET | Hologres V0.9 以降 | 詳細については、「ネットワークアドレスタイプ」をご参照ください。 | このデータ型を使用すると、データドメインに IPv4 または IPv6 ホストアドレスを保存できます。 | なし | 192.168.100.128/25 |
MONEY | Hologres V0.9 以降 | 8 バイト。詳細については、「通貨型」をご参照ください。 | このデータ型を使用すると、固定小数点精度の通貨金額を格納できます。 | -92233720368547758.08 ~ +92233720368547758.07 | $12.34 |
OID | Hologres V0.9 以降 | 4 バイト | 数値形式のオブジェクト識別子。 | なし | 1024 |
UUID | Hologres V0.9 以降 | 16 バイト | 128 ビットの固定長の汎用一意識別子。 説明 uuid-ossp モジュールによって提供されるアルゴリズムはサポートされていません。 | 00000000-0000-0000-0000-000000000000 ~ ffffffff-ffff-ffff-ffff-ffffffffffff | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 |
次の SQL ステートメントの例は、TIMESTAMP WITH TIME ZONE、DATE、および DECIMAL データ型の例を示しています。
CREATE TABLE test_data_type (
tswtz_column TIMESTAMP WITH TIME ZONE,
date_column date,
decimal_column decimal(38, 10),
char_column char(20),
varchar_volumn varchar(225)
);
INSERT INTO test_data_type
VALUES ('2004-10-19 08:08:08', '2004-10-19', 123.456, 'abcd', 'a');
SELECT * FROM test_data_type;
tswtz_column | date_column | decimal_column | char_column | varchar_volumn
------------------------+-------------+----------------+----------------------+----------------
2004-10-19 08:08:08+08 | 2004-10-19 | 123.4560000000 | abcd | a
(1 row)次の SQL ステートメントの例は、BIT、VARBIT、および BYTEA データ型の例を示しています。
// BIT 型と VARBIT 型
CREATE TABLE test (a BIT(3), b BIT VARYING(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');
ERROR: bit string length 2 does not match type bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
a | b
-----+-----
101 | 00
100 | 101
// BYTEA 型
SET bytea_output = 'escape';
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
----------------
abc klm *\251T
RESET bytea_output; -- デフォルトは 'hex'
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
--------------------------
\x616263206b6c6d202aa954
(1 row)配列型
Hologres は、次の型の 1 次元配列をサポートしています。
int4[]
int8[]
float4[]
float8[]
boolean[]
text[]
次の SQL ステートメントの例は、上記の配列型の使用方法を示しています。
配列を宣言します。
CREATE TABLE array_example( int4_array int4[], int8_array int8[], float4_array float4[], float8_array float8[], boolean_array boolean[], text_array text[]);配列を挿入します。
ARRAY キーワードを使用します。
INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES (ARRAY[1, 2, 3, 4], ARRAY[1, 2, 3, 4], ARRAY[1.0, 2.0], ARRAY[1.0, 2.0, 3.0], ARRAY[true, true, false], ARRAY['foo1', 'foo2', 'foo3']);{}式を使用します。INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES ('{1, 2, 3, 4}', '{1, 2, 3, 4}', '{1.0, 2.0}', '{1.0, 2.0, 3.0}', '{true, true, false}', '{"foo1", "foo2", "foo3"}');
配列からデータをクエリします。
配列内の要素をクエリします。
SELECT int4_array[3] FROM array_example;配列内の複数の要素をクエリします。
SELECT int4_array[1:2] FROM array_example;
MaxCompute と Hologres 間のデータ型マッピング
次の表に、MaxCompute テーブルをソースとする外部テーブルを作成する場合の、MaxCompute と Hologres 間のデータ型マッピングを示します。
MaxCompute でサポートされているデータ型 | Hologres でサポートされているデータ型 | サポートされているバージョン | 説明 |
| TEXT | Hologres のすべてのバージョン。 | なし。 |
BIGINT | INT8 | Hologres のすべてのバージョン。 | なし。 |
INT |
| Hologres のすべてのバージョン。 | なし。 |
FLOAT |
| Hologres のすべてのバージョン。 | なし。 |
DOUBLE |
| Hologres のすべてのバージョン。 | なし。 |
BOOLEAN | BOOL | Hologres のすべてのバージョン。 | なし。 |
DATETIME | TIMESTAMP WITH TIME ZONE | Hologres のすべてのバージョン。 | MaxCompute の DATETIME データ型は、UTC+8 の日時を指定します。時刻の範囲は 0000-01-01 から 9999-12-31 までで、ミリ秒単位まで正確です。 |
DECIMAL | NUMERIC | Hologres のすべてのバージョン。 | MaxCompute の DECIMAL データ型に精度またはスケールが指定されていない場合、デフォルトで DECIMAL (38,18) が使用されます。 IMPORT FOREIGN SCHEMA ステートメントを実行して外部テーブルを作成すると、精度とスケールは自動的に変換されます。ステートメントの詳細については、「IMPORT FOREIGN SCHEMA」をご参照ください。 |
TIMESTAMP | TIMESTAMP WITH TIME ZONE | Hologres V0.8 以降。 |
|
CHAR(n) | デフォルトでは、CHAR(n) が使用されます。 Hologres では、MaxCompute の CHAR(n) を TEXT にマップすることもできます。 TEXT にマップするには、 | Hologres V0.8 以降。 | MaxCompute の CHAR(n) データ型のエントリは、n 文字の固定長の文字列です。 n の最大値は 255 です。必要な長さよりも短い文字列を挿入すると、Hologres は文字列にスペースを追加して長さを増やします。 |
VARCHAR(n) | デフォルトでは、VARCHAR(n) が使用されます。 Hologres では、MaxCompute の VARCHAR(n) を TEXT にマップすることもできます。 TEXT にマップするには、 | Hologres V0.8 以降。 | MaxCompute の VARCHAR(n) データ型のエントp>MaxCompute の VARCHAR(n) データ型のエントリは、n 文字の可変長の文字列です。 n の有効な値: 1 ~ 65535。 |
DATE | DATE | Hologres V0.8 以降。 | なし。 |
SMALLINT | デフォルトでは、INT2 が使用されます。 Hologres では、MaxCompute の SMALLINT を INT8 にマップすることもできます。 INT8 にマップするには、 | Hologres のすべてのバージョン。Hologres V0.8 のデータ型は INT4、Hologres V0.9 のデータ型は INT2 です。 | なし。 |
TINYINT | デフォルトでは、INT2 が使用されます。 Hologres では、MaxCompute の TINYINT を INT8 にマップすることもできます。 INT8 にマップするには、 | Hologres のすべてのバージョン。Hologres V0.8 のデータ型は INT4、Hologres V0.9 のデータ型は INT2 です。 | なし。 |
CHAR | サポートされていません。 | サポートされていません。 | なし。 |
ARRAY<INT> | INT4[] | Hologres V0.8 以降。 | なし。 |
ARRAY<BIGINT> | INT8[] | Hologres V0.8 以降。 | なし。 |
ARRAY<FLOAT> | FLOAT4[] | Hologres V0.8 以降。 | なし。 |
ARRAY<DOUBLE> | FLOAT8[] | Hologres V0.8 以降。 | なし。 |
ARRAY<BOOLEAN> | BOOLEAN[] | Hologres V0.8 以降。 | なし。 |
ARRAY<STRING> | TEXT[] | Hologres V0.8 以降。 | なし。 |
BINARY | BYTEA | Hologres V0.9 以降。 | なし。 |
ARRAY<TINYINT> | サポートされていません。 | サポートされていません。 | なし。 |
ARRAY<SMALLINT> | サポートされていません。 | サポートされていません。 | なし。 |
Hologres でサポートされていないデータ型のフィールドを含む MaxCompute テーブルの場合、クエリでこのフィールドを指定しないと、他のフィールドのデータをクエリできます。
Realtime Compute for Apache Flink または Blink と Hologres 間のデータ型マッピング
次の表に、Realtime Compute for Apache Flink または Blink と Hologres 間のデータ型マッピングを示します。
Realtime Compute for Apache Flink または Blink は、Hologres バイナリログソーステーブルの一部のデータ型のみをサポートしています。詳細については、「Realtime Compute for Apache Flink または Blink を使用して Hologres バイナリログデータをリアルタイムで使用する」をご参照ください。
Realtime Compute for Apache Flink または Blink でサポートされているデータ型 | Hologres でサポートされているデータ型 | サポートされている Hologres バージョン | サポートされている Realtime Compute for Apache Flink または Blink バージョン |
INT |
| Hologres のすべてのバージョン。 | すべてのバージョン。 |
BIGINT | INT8 | Hologres のすべてのバージョン。 | すべてのバージョン。 |
VARCHAR | TEXT | Hologres のすべてのバージョン。 | すべてのバージョン。 |
DOUBLE |
| Hologres のすべてのバージョン。 | すべてのバージョン。 |
BOOLEAN | BOOL | Hologres のすべてのバージョン。 | すべてのバージョン。 |
DECIMAL | NUMERIC 説明 CREATE TABLE AS ステートメントを実行して Realtime Compute for Apache Flink から Hologres にデータを同期する場合、次の点に注意してください。
| Hologres のすべてのバージョン。 | すべてのバージョン。 |
DATE | DATE | Hologres V0.8 以降。 | すべてのバージョン。 |
TIMESTAMP | TIMESTAMP WITH TIME ZONE | Hologres のすべてのバージョン。 | すべてのバージョン。 |
FLOAT |
| Hologres のすべてのバージョン。 | すべてのバージョン。 |
TIME | TIME and TIMETZ | Hologres のすべてのバージョン。 説明 Hologres V2.1.24 以降では、固定プラン機能を使用して SQL ステートメントの実行を高速化する場合、TIME および TIMETZ データ型がサポートされています。詳細については、「固定プランを使用して SQL ステートメントの実行を高速化する」をご参照ください。 |
|
VARCHAR | JSONB | Hologres V0.10 以降。 |
|
VARCHAR | JSON | Hologres V0.9 以降。 |
|
BYTES | RoaringBitmap | Hologres V0.10 以降。 |
|
VARCHAR | GEOMETRY and GEOGRAPHY | Hologres のすべてのバージョン。 説明 Hologres V2.1 以降では、固定プラン機能を使用して SQL ステートメントの実行を高速化し、TGEOMETRY および GEOGRAPHY データ型のデータを書き込むことができます。詳細については、「固定プランを使用して SQL ステートメントの実行を高速化する」をご参照ください。 |
|
TINYINT | SMALLINT | Hologres のすべてのバージョン。 |
|
SMALLINT | SMALLINT | Hologres のすべてのバージョン。 |
|
ARRAY<INT> | int4[] | Hologres V0.8 以降。 |
|
ARRAY<BIGINT> | int8[] | Hologres V0.8 以降。 |
|
ARRAY<FLOAT> | float4[] | Hologres V0.8 以降。 |
|
ARRAY<DOUBLE> | float8[] | Hologres V0.8 以降。 |
|
ARRAY<BOOLEAN> | boolean[] | Hologres V0.8 以降。 |
|
ARRAY<VARCHAR> | TEXT[] | Hologres V0.8 以降。 |
|
CHAR | サポートされていません。 | サポートされていません。 | サポートされていません。 |
BINARY | サポートされていません。 | サポートされていません | サポートされていません。 |
MySQL と Hologres 間のデータ型マッピング
次の表に、MySQL と Hologres 間のデータ型マッピングを示します。 MySQL から Hologres にデータを移行する方法の詳細については、「MySQL から Hologres にデータを移行する」をご参照ください。
MySQL でサポートされているデータ型 | Hologres でサポートされているデータ型 |
BIGINT | BIGINT |
BINARY(n) | BYTEA |
BIT | BOOLEAN |
|
|
DATE | DATE |
DATETIME | TIMESTAMP [WITHOUT TIME ZONE] |
|
|
DOUBLE | DOUBLE PRECISION |
FLOAT | REAL |
|
|
MEDIUMINT | INTEGER |
NUMERIC(p,s) | NUMERIC(p,s) |
SMALLINT | SMALLINT |
| BYTEA |
TINYINT | SMALLINT |
| TEXT |
TIME | TIME [WITHOUT TIME ZONE] |
TIMESTAMP | TIMESTAMP [WITH TIME ZONE] |
| BYTEA |
VARCHAR(n) | VARCHAR(n) |
VARCHAR(max) | TEXT |
Data Lake Formation (DLF) と Hologres 間のデータ型マッピング
DLF でサポートされているデータ型 | Hologres でサポートされているデータ型 |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
BOOLEAN | BOOLEAN |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DATE | DATE |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
STRING | TEXT |
BINARY | BYTEA |
DECIMAL(m,n) | NUMERIC(m,n) |
VARCHAR(n) | CHARACTER VARYING(n) |
CHAR(n) | CHARACTOR(n) |
ARRAY<type> | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
Hive と Hologres 間のデータ型マッピング
Hive でサポートされているデータ型 | Hologres でサポートされているデータ型 |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL | NUMERIC |
NUMERIC | NUMERIC |
DATE | DATE |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
STRING | TEXT |
VARCHAR | VARCHAR |
CHAR | CHAR |
BINARY | BYTEA |
BOOL | BOOLEAN |
ARRAY<type> | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
Apache Hudi と Hologres 間のデータ型マッピング
次の表に、Apache Hudi と Hologres V1.3 以降の間のデータ型マッピングを示します。
Apache Hudi でサポートされているデータ型 | Hologres でサポートされているデータ型 |
IntegerType | INT |
LongType | BIGINT |
FloatType | REAL |
DoubleType | DOUBLE PRECISION |
DecimalType | NUMERIC |
タイムスタンプの種類 | TIMESTAMP WITHOUT TIME ZONE |
日付型 | DATE |
YearMonthIntervalType | サポートされていません |
DayTimeIntervalType | サポートされていません |
StringType | テキスト |
VarcharType | サポートされていません |
CharType | サポートされていません |
ブール型 | BOOL |
バイナリ型 | BYTEA |
ByteType | サポートされていません |
ShortType | サポートされていません |
ArrayType(elementType、containsNull) | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
Delta Lake と Hologres 間のデータ型マッピング
次の表は、Delta Lake と Hologres V1.3 以降の間のデータ型マッピングを示しています。
Delta Lake でサポートされているデータ型 | Hologres でサポートされているデータ型 |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(p,s) | NUMERIC |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
DATE | DATE |
INTERVAL intervalQualifier | サポートされていません |
STRING | TEXT |
BOOLEAN | BOOLEAN |
BINARY | BYTEA |
ARRAY<elementType> | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
Paimon と Hologres 間のデータ型マッピング
Paimon でサポートされているデータ型 | Hologres でサポートされているデータ型 |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(p,s) | DECIMAL |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
DATE | DATE |
CHAR | CHAR |
VARCHAR | VARCHAR |
BINARY | BYTEA |
ARRAY | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
Iceberg と Hologres 間のデータ型マッピング
Iceberg でサポートされているデータ型 | Hologres でサポートされているデータ型 |
BOOLEAN | BOOLEAN |
INT | INTEGER |
LONG | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(P,S) | NUMERIC(P,S) |
DATE | DATE |
TIME | TEXT。Spark は TIME データ型をサポートしていません。Flink から DLF に TIME データ型のデータを書き込むと、データのデータ型は TIME から STRING に変換されます。 |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
TIMESTAMPTZ | サポートされていません。 |
STRING | TEXT |
UUID | Flink と Spark ではサポートされていません。 |
FIXED(L) | BYTEA |
BINARY | BYTEA |
LIST | ARRAY<hologres_data_type> 次のデータ型がサポートされています。
|
STRUCT | サポートされていません。 |
MAP | サポートされていません。 |