我使用cqlsh中的副本将数据从一个大的.csv文件上传到Cassandra。 我正在使用cassandra 1.2和CQL 3.0。 但是,由于“是我的数据的一部分,我必须使用其他字符来上传我的数据,我需要使用任何扩展的ASCII字符。我尝试了各种方法,但失败了。
以下工作,但需要使用扩展的ascii字符为我的目的..
copy (<columnnames>) from <filename> where deleimiter='|' and quote = '"'; copy (<columnnames>) from <filename> where deleimiter='|' and quote = '~';
当我给出quote ='ß'时,我得到以下错误:
:“quotechar”必须是1个字符的字符串
请参考如何为引用参数使用扩展的ASCII字符..
提前致谢
答案 0 :(得分:0)
COPY documentation page上的注释表明,对于批量加载(如您的情况),应使用json2sstable实用程序。然后,您可以使用sstableloader将sstables加载到群集。因此,我建议您编写一个脚本/程序,将CSV转换为JSON,并将这些工具用于大型CSV。 JSON处理ASCII表中的所有字符都没有任何问题。
答案 1 :(得分:0)
我遇到了类似的问题,并检查了cqlsh的源代码(它是一个python脚本)。在我的例子中,我用python生成了csv,所以这是找到正确的python csv参数的问题。
以下是cqlsh的关键信息:
csv_dialect_defaults = dict(delimiter=',', doublequote=False,
escapechar='\\', quotechar='"')
因此,如果您足够幸运,可以从python生成.csv文件,那么只需使用csv模块:
writer = csv.writer(open("output.csv", 'w'), **csv_dialect_defaults)
希望这有帮助,即使你没有使用python。