Cassandra cli:将十六进制值转换为人类可读的格式

时间:2011-01-11 21:38:31

标签: nosql cassandra cassandra-cli

我从开始,当我在中运行listget命令时,我得到的结果如下:

[default@usersdatabase] list users;
Using default limit of 100
-------------------
RowKey: boby
=> (column=6e616d65, value=426f62, timestamp=1294780856414000)
-------------------
RowKey: edzuksm
=> (column=656d61696c, value=6d617268656c697340696e626f782e6c76, timestamp=1294780533705000)
=> (column=6e616d65, value=45647561726473, timestamp=1294780488155000)
=> (column=7375726e616d65, value=4d617268656c6973, timestamp=1294780515429000)

2 Rows Returned.

我无法阅读,我只看到像'6e616d65'这样的值。

如何以人类可读的格式显示值?

1 个答案:

答案 0 :(得分:20)

默认情况下,列名和列值在Cassandra中没有类型,它们只是字节数组。如果您设置比较器类(列名称类型)或验证类(列值类型),CLI将接收此信息并显示合理的数据类型格式而不是字节数组的十六进制版本。

如果您不希望输入实际数据,可以通过使用assume命令告诉CLI假定列名或值是某种数据类型。密钥永远不会有数据类型,因此如果您想使用某些数据类型,则必须使用assume

以下是供参考的帮助信息:

[default@Keyspace1] help assume;    
assume <column_family> comparator as <type>;
assume <column_family> sub_comparator as <type>;
assume <column_family> validator as <type>;
assume <column_family> keys as <type>;

Assume one of the attributes (comparator, sub_comparator, validator or keys)
of the given column family to match specified type. Available types: bytes, integer,
long, lexicaluuid, timeuuid, utf8, ascii.
example:
assume Users comparator as lexicaluuid;

编辑:从Cassandra 0.8开始,您可以为密钥指定验证类,CLI会自动使用此信息。