Rust Client Library for Treasure Data
Add the following dependency in Cargo.toml
[dependencies]
td-client = "0.6"
First, add this line to your crate root
rust
extern crate td_client;
Next, set up a td-client with your API key for Treasure Data
```rust use tdclient::client::*; use tdclient::model::*;
let client = Client::new("your API key"); ```
rust
client.create_database("my_database").unwrap();
println!("{:?}", client.databases().unwrap());
client.delete_database("unused_database").unwrap();
rust
client.create_table("my_database", "my_table").unwrap();
println!("{:?}", client.tables("my_database").unwrap());
client.swap_table("my_database", "my_table", "my_temp_table").unwrap();
client.rename_table("my_database", "my_temp_table", "unused_table").unwrap();
client.delete_table("my_database", "unused_table").unwrap();
```rust // Import msgpack gzipped file client.importmsgpackgzfiletotable("mydatabase", "my_table", "/tmp/2016-08-01.msgpack.gz", None).unwrap();
// Import records let mut chunk = TableImportWritableChunk::new().unwrap(); chunk.nextrow(4).unwrap(); chunk.writekeyandi64("time", time::gettime().sec).unwrap(); chunk.writekeyandstr("name", "foo").unwrap(); chunk.writekeyandu8("age", 42).unwrap(); chunk.writekeyandf32("pi", 3.14).unwrap();
chunk.nextrow(3).unwrap(); chunk.writekeyandi64("time", time::gettime().sec).unwrap(); chunk.writekeyandstr("name", "bar").unwrap(); chunk.writekeyand_u8("age", 56).unwrap();
let readable_chunk = chunk.close().unwrap();
client.importmsgpackgzfiletotable("mydatabase", "mytable", readablechunk.filepath.asstr(), None).unwrap(); ```
```rust // List up jobs println!("{:?}", client.jobs(Some(JobStatusOption::Success), None, None).unwrap());
// Look at the job println!("{:?}", client.job(1234567).unwrap());
// Check the job's status println!("{:?}", client.job_status(1234567).unwrap()); ```
```rust // Issue a query let jobid = client.issuejob( QueryType::Presto, "sampledatasets", "select code, method, count(1) as cnt from wwwaccess group by code, method", None, None, None, None, None).unwrap();
println!("jobid={}, status={:?}", jobid, client.waitjob(jobid, None).unwrap());
// Download the result to a file let resultfile = File::create("/tmp/result.msgpack.gz").unwrap(); client.downloadjobresult(jobid, &result_file).unwrap();
// Do something for each record client.eachrowinjobresult(job_id, &|xs| println!(">>>> {:?}", xs)); ```