如何使用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)
{
}