如何在cqlsh中的COPY中使用ascii字符作为引用

时间:2013-07-18 20:50:07

标签: csv cassandra sqlbulkcopy cql3 cqlsh

我使用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字符..

提前致谢

2 个答案:

答案 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。