我想将选定的行从列族复制到 .csv 文件。复制命令仅可用于将列或整个表转储到不带 where 子句的文件中。有没有办法在复制命令中使用 where 子句?
我想到的另一种方法是,
执行“插入 table2 () 值 ( select * from table1 where <where_clause>
);” 然后将 table2 转储到 .csv ,这也是不可能的。
任何帮助将非常感激。
无法在副本中创建 where 子句,但您可以使用此方法:
echo "select c1,c2.... FROM keySpace.Table where ;" | bin/cqlsh > output.csv
它允许您将结果保存在 output.csv 文件中。
不,在导出到 CSV 文件时没有对“where”子句的内置支持。
一种替代方法是使用其中一个驱动程序编写您自己的脚本。在脚本中,您将执行“选择”,然后读取结果并写入 CSV 文件。
除了 Amine CHERIFI 的回答:
| sed -e 's/^\s+//; s_\s*\|\s*_,_g; /^-{3,}|^$|^\(.+\)$/d'
|
为,
使用过滤器运行 SQL 并将响应重定向到 csv 的其他方法
1) 在 cqlsh 中,使用 CAPTURE 命令并将输出重定向到文件。您需要在执行命令之前设置跟踪
示例: CAPTURE 'output.txt' -- 在此命令被捕获到 output.txt 文件后执行的 sql 的输出
2) 如果您想将 SQL 输出重定向到来自 cqlsh 外部的文件
./cqlsh -e'select * from keyspaceName.tableName' > fileName.txt -- hostname