web-dev-qa-db-ja.com

文字列またはテキストをblobとしてCassandra(具体的にはCQLSH)に挿入するにはどうすればよいですか?

CQLSHでテスト目的で、テキストまたは文字列をBLOBとして挿入しようとしていました

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を保持する列が1つある場合、最初にblobに変更してから、cqlshに挿入することで、その位置に文字列を挿入できるかどうかです。

11
Pinocchio

以下が機能しているようです。 WHEREステートメントのSELECT条件が、誤った16進数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;
12
cevaris