Как вставить строку или текст в виде BLOB-объекта в Cassandra (в частности, в CQLSH)?

Я пытался вставить текст или некоторую строку в качестве BLOB-объекта для тестирования в CQLSH

insert into test_by_score (commit, delta, test, score)
       values (textAsBlob('bdb14fbe076f6b94444c660e36a400151f26fc6f'), 0,
       textAsBlob('{"prefix": "enwiki", "title": "\"Aghnadarragh\""}'), 100);

Это не сработало, потому что после того, как я это сделал:

select * from test_by_score where commit = 0x0b5db8b91bfdeb0a304b372dd8dda123b3fd1ab6;

Он сказал, что было 0 столбцов... что было немного неожиданно (потому что это не выдало ошибку мне), но я предполагаю, что textAsBlob - это не вещь в cqlsh. Тогда кто-то знает, как это сделать?


Схема:

CREATE TABLE IF NOT EXISTS test_by_score (
    commit blob, 
    delta int, 
    score int, 
    test blob, 
    PRIMARY KEY(commit, delta, test)
);

Я неохотно разместил мою схему, потому что я считаю, что мой вопрос не совсем об этой конкретной схеме. Я просто хочу знать, что если есть один столбец, который содержит BLOB-объекты, возможно ли вставить строку в эту позицию, сначала изменив ее на BLOB-объект, а затем вставив ее в cqlsh?

1 ответ

Это следующее, кажется, работает. Ваше условие where в вашем утверждении select может пытаться получить доступ к неправильному гексу 0x0b5db8b91bfdeb0a304b372dd8dda123b3fd1ab6,

DROP KEYSPACE example;
CREATE KEYSPACE example WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
USE example;

CREATE TABLE IF NOT EXISTS test_by_score (
    commit blob, -- blob representing the commit hash
    delta int, -- how much the scores have changed
    score int, -- the test score, which is determined by the client
    test blob, -- blob for the test
    PRIMARY KEY(commit, delta, test)
);

insert into test_by_score  (commit, delta, test, score) values 
  (textAsBlob('bdb14fbe076f6b94444c660e36a400151f26fc6f'), 0, textAsBlob('{"prefix": "enwiki", "title": "\"Aghnadarragh\""}'), 100
);

INSERT INTO test_by_score (commit, delta, test, score) VALUES (
  textAsBlob('cdb14fbe076f6b94444c660e36a400151f26fc6f'), 0, textAsBlob('{"prefix": "enwiki", "title": "\"Aghnadarragh\""}'), 100
);

insert into test_by_score (commit, delta, test, score) values (
  textAsBlob('adb14fbe076f6b94444c660e36a400151f26fc6f'), 0, textAsBlob('{"prefix": "enwiki", "title": "\"Aghnadarragh\""}'), 100
);

Чтобы захватить все ряды

select * from example.test_by_score 

Чтобы выбрать конкретную строку.

select * from example.test_by_score 
  where commit = 0x62646231346662653037366636623934343434633636306533366134303031353166323666633666;
Другие вопросы по тегам