查找已创建表中列的数据类型

时间:2015-07-22 21:51:15

标签: cassandra cql

我正在尝试为表结构的用户验证提供服务,其中一个组件是列数据类型,如`CREATE中的uuidtextbigint表'下面的陈述。

USE my_keyspace;
CREATE TABLE users (
    id uuid,
    name text,
    age bigint);

如果我这样做

USE system;
SELECT validator FROM schema_columns
WHERE keyspace_name='my_keyspace' AND columnfamily_name='users';

我得到了

org.apache.cassandra.db.marshal.UUIDType
org.apache.cassandra.db.marshal.UTF8Type
org.apache.cassandra.db.marshal.LongType

这看起来很有用,但仔细观察后,多个不同的数据类型可以映射到相同的验证器值。有没有办法可以提取“CREATE TABLE”语句中输入的数据类型信息,或者至少找到类型之间的区别?

另外,我很好奇为什么验证器数据前面有'org.apache.cassandra ...',并且无法找到解释,所以如果有人知道为什么会这样,我会非常有兴趣知道。

2 个答案:

答案 0 :(得分:5)

  

这看起来很有用,但仔细观察后,多个不同的数据类型可以映射到相同的验证器值。

如果是这种情况,例如使用varchar和text,我相信数据类型相互映射并且可以互换。如果我错了,其他任何人都会纠正我。

  

有没有办法可以提取“CREATE TABLE”语句中输入的数据类型信息,或者至少找到类型之间的区别?

我知道的唯一方法是:

SpiceManager
  

另外,我很好奇为什么验证器数据前面有'org.apache.cassandra ...',并且无法找到解释,所以如果有人知道为什么会这样,我会非常有兴趣知道。

Cassandra是用Java实现的,这是实现数据类型的Class的完整路径。

更多信息:

http://docs.datastax.com/en/cql/3.0/cql/cql_reference/cql_data_types_c.html

https://github.com/apache/cassandra/tree/trunk/src/java/org/apache/cassandra/db/marshal

答案 1 :(得分:2)

使用以下查询:

{{1}}