12

我想将选定的行从列族复制到 .csv 文件。复制命令仅可用于将列或整个表转储到不带 where 子句的文件中。有没有办法在复制命令中使用 where 子句?

我想到的另一种方法是,

执行“插入 table2 () 值 ( select * from table1 where <where_clause>);” 然后将 table2 转储到 .csv ,这也是不可能的。

任何帮助将非常感激。

4

4 回答 4

8

无法在副本中创建 where 子句,但您可以使用此方法:

echo "select c1,c2.... FROM keySpace.Table where ;" | bin/cqlsh > output.csv

它允许您将结果保存在 output.csv 文件中。

于 2015-04-16T13:14:30.013 回答
3

不,在导出到 CSV 文件时没有对“where”子句的内置支持。

一种替代方法是使用其中一个驱动程序编写您自己的脚本。在脚本中,您将执行“选择”,然后读取结果并写入 CSV 文件。

于 2014-06-14T21:04:14.057 回答
1

除了 Amine CHERIFI 的回答:

| sed -e 's/^\s+//; s_\s*\|\s*_,_g; /^-{3,}|^$|^\(.+\)$/d'

  1. 删除空格
  2. 替换|,
  3. 删除标题分隔符、空行和摘要行
于 2018-08-13T15:55:11.003 回答
0

使用过滤器运行 SQL 并将响应重定向到 csv 的其他方法

1) 在 cqlsh 中,使用 CAPTURE 命令并将输出重定向到文件。您需要在执行命令之前设置跟踪

示例: CAPTURE 'output.txt' -- 在此命令被捕获到 output.txt 文件后执行的 sql 的输出

2) 如果您想将 SQL 输出重定向到来自 cqlsh 外部的文件

./cqlsh -e'select * from keyspaceName.tableName' > fileName.txt -- hostname
于 2019-02-05T08:52:37.957 回答