如何使用Java将数据从Cassandra导出到CSV文件

如何使用Java将数据从Cassandra导出到CSV文件,java,cassandra-2.0,Java,Cassandra 2.0,我尝试使用,但后来发现它不支持COPY命令,有人知道使用Java导出数据的其他方法吗?谢谢。例如,我创建了事件表: cqlsh:kunderatest> describe TABLE event ; CREATE TABLE event ( id text, log text, timstamp bigint, PRIMARY KEY (id) ) 并插入了三条记录 cqlsh:kunderatest> INSERT INTO event (id, log , t

我尝试使用,但后来发现它不支持
COPY
命令,有人知道使用Java导出数据的其他方法吗?谢谢。

例如,我创建了事件表:

cqlsh:kunderatest> describe TABLE event ;

CREATE TABLE event (
  id text,
  log text,
  timstamp bigint,
  PRIMARY KEY (id)
)
并插入了三条记录

cqlsh:kunderatest> INSERT INTO event (id, log , timstamp ) VALUES ( '1', 'my first log' , 12345678);
cqlsh:kunderatest> INSERT INTO event (id, log , timstamp ) VALUES ( '2', 'my second log' , 12345679);
cqlsh:kunderatest> INSERT INTO event (id, log , timstamp ) VALUES ( '3', 'my third log' , 12345680);
1)首先,您可以使用CQLSH客户端来完成。现在,您可以通过执行以下命令将事件表的数据导出到任何文件中(在本例中为log.txt)

cqlsh:kunderatest>  COPY kunderatest.sample (id, name, age, address) TO './log.txt' WITH DELIMITER = '|' AND QUOTE = '''' AND ESCAPE = '''' AND NULL = '<null>';
3 rows exported in 0.042 seconds.
注意:cassandrahome是cassandra包目录的路径。在我的例子中,它是/usr/local/apache-cassandra-2.0.6

COPY kunderatest.sample (id, name, age, address) TO './log.txt' WITH DELIMITER = '|' AND QUOTE = '''' AND ESCAPE = '''' AND NULL = '<null>'
    String exportCommand = cassandraHome + "bin/cqlsh " + hostname + " " + rpcPort + " -f command.txt"; // file which holds export command

    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec(exoprtCommand);

    // for keep tracking the log, you can do following. 
    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line = null;

    while ((line = br.readLine()) != null)
    {

    }