Cassandra alter column type:哪些类型兼容?
Cassandra alter column type: which types are compatible?
关于无法更改列类型的一些示例,互联网上有一些不完整的信息。例如,在 DataStax site 中提到:
- 正在更改聚簇列的类型。
- 正在更改列
定义了一个索引。
或者,例如,提到 here 不能将 uuid
转换为 timeuuid
。根据我的个人经验,我无法将 text
更改为 timestamp
(我们将日期以 ISO8601 格式存储为文本,这是项目时间表早期的一个不幸决定)。
但是,我找不到关于哪些类型可以转换为哪些类型,或者至少 不能 可以转换为哪些类型的完整描述。有人知道吗?
好问题!我不得不承认,我也对缺乏关于这方面的详尽文档感到有点惊讶。你的问题激发了我做一些调查和 blog about it。
基本上,这是 Cassandra 兼容的 CQL 类型的完整列表(使用 Cassandra 2.2.0):
- ascii -> blob、文本、varchar
- bigint -> blob、时间戳、varint
- int -> blob,varint
- text -> blob, varchar
- 时间戳 -> bigint、blob、varint
- timeuuid -> blob,UUID
- varchar -> blob,文本
备注:
- blob 里面有很多,因为 任何东西 都可以转换成 blob。
- cqlsh 允许您将 varint 转换为新的日期类型,但这是一个错误 (CASSANDRA-10027)。不要真的去尝试。
2020 年答案:
此功能似乎已被完全删除。 The version 6.8 documentation
状态:
Cannot change the data type of a column.
关于无法更改列类型的一些示例,互联网上有一些不完整的信息。例如,在 DataStax site 中提到:
- 正在更改聚簇列的类型。
- 正在更改列 定义了一个索引。
或者,例如,提到 here 不能将 uuid
转换为 timeuuid
。根据我的个人经验,我无法将 text
更改为 timestamp
(我们将日期以 ISO8601 格式存储为文本,这是项目时间表早期的一个不幸决定)。
但是,我找不到关于哪些类型可以转换为哪些类型,或者至少 不能 可以转换为哪些类型的完整描述。有人知道吗?
好问题!我不得不承认,我也对缺乏关于这方面的详尽文档感到有点惊讶。你的问题激发了我做一些调查和 blog about it。
基本上,这是 Cassandra 兼容的 CQL 类型的完整列表(使用 Cassandra 2.2.0):
- ascii -> blob、文本、varchar
- bigint -> blob、时间戳、varint
- int -> blob,varint
- text -> blob, varchar
- 时间戳 -> bigint、blob、varint
- timeuuid -> blob,UUID
- varchar -> blob,文本
备注:
- blob 里面有很多,因为 任何东西 都可以转换成 blob。
- cqlsh 允许您将 varint 转换为新的日期类型,但这是一个错误 (CASSANDRA-10027)。不要真的去尝试。
2020 年答案:
此功能似乎已被完全删除。 The version 6.8 documentation 状态:
Cannot change the data type of a column.