Wednesday, May 2, 2012
Dumping Data from Cassandra (like mysqldump, to create a seed script)
To manage our database migrations for Cassandra, we've taken to creating scripts that create/modify the schema and populate configuration data. In my previous post, I showed how to dump and load the schema (keyspaces and column families).
Here is a code snippet that lets you dump the data into set statements that you can then load via the CLI.
Here is a code snippet that lets you dump the data into set statements that you can then load via the CLI.
public void dumpColumnFamily() {
String columnFamily = "YOUR_COLUMN_FAMILY";
Cluster cluster = HFactory.getOrCreateCluster("dev", "localhost:9160");
Keyspace keyspace = HFactory.createKeyspace("YOUR_KEYSPACE", cluster);
RangeSlicesQuery<String, String, String> rangeSlicesQuery = HFactory
.createRangeSlicesQuery(keyspace, StringSerializer.get(),
StringSerializer.get(), StringSerializer.get());
rangeSlicesQuery.setColumnFamily(columnFamily);
rangeSlicesQuery.setKeys("", "");
rangeSlicesQuery.setRange("", "", false, 2000); // MAX_COLUMNS
rangeSlicesQuery.setRowCount(2000); // MAX_ROWS
QueryResult<OrderedRows<String, String, String>> result = rangeSlicesQuery .execute();
OrderedRows<String, String, String> orderedRows = result.get();
for (Row<String, String, String> r : orderedRows) {
ColumnSlice<String, String> slice = r.getColumnSlice();
for (HColumn<String, String> column : slice.getColumns()) {
System.out.println("set " + columnFamily + "['" + r.getKey()
+ "']" + "['" + column.getName() + "'] = '"
+ column.getValue() + "';");
}
}
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment