Cassandra新手使用cqlsh插入XML数据报错求助
解决Cassandra插入含XML内容数据的报错问题
嘿,刚上手Cassandra遇到这种小问题太正常啦,我来帮你搞定~
首先看你遇到的核心问题:你写的INSERT语句里用了双引号包裹XML字符串,但在CQL语法里,字符串值必须用单引号来包裹,双引号是用来引用列名、表名这类标识符的,这直接导致了cqlsh的解析错误。
修正后的正确插入语句
把双引号换成单引号就可以了:
INSERT INTO test.EVENT(Id, EVENT_DATA) VALUES (1, '<note> </note>');
额外注意事项
如果你的XML内容里本身包含单引号(比如<note>It's a test</note>),记得用两个单引号来转义单个单引号,像这样:
INSERT INTO test.EVENT(Id, EVENT_DATA) VALUES (2, '<note>It''s a test</note>');
更稳妥的方式(用客户端驱动)
如果之后你用Python这类语言的客户端驱动操作Cassandra,建议用参数化查询,不仅能自动处理字符转义,还能避免注入问题,举个Python的例子:
from cassandra.cluster import Cluster # 连接到Cassandra集群 cluster = Cluster(['127.0.0.1']) # 替换成你的节点地址 session = cluster.connect('test') # 参数化插入,不用手动转义特殊字符 session.execute( "INSERT INTO EVENT (Id, EVENT_DATA) VALUES (%s, %s)", (3, '<note>带特殊字符的内容:& < ></note>') )
你之前的报错traceback截断了,但核心原因就是引号用错了,换成单引号后应该就能正常插入啦~
内容的提问来源于stack exchange,提问作者dexterousashish
相关产品推荐
相关产品推荐

