先定义一个数据表:html
create table my_table (
name string,
mxlist array (object as(name string, age integer))
);java
这样就新建了一个表,结构是这样的:sql
能够看到mxlist中有2个对象,关于object和array的创建,官网有很详细的说明json
接下来执行对my_table的CRUD操做,cratedb有基于各类语言的client端,我这里使用的是java,不过我选择的是rest方式,由于java的client端代码版本号过低,一直没有更新,用rest的话更加自由,rest官方文档:https://crate.io/docs/reference/protocols/http.htmlpost
java代码:url
JSONObject o = new JSONObject(); o.put("name", "jemmy"); o.put("age", 67); JSONArray arr = new JSONArray(); HTTPAliveCRUDClient client = HTTPAliveCRUDClient.getInstance("192.168.13.50", 4200);//这是本身封装的方法 client.connect(); // String sql = "SELECT * FROM my_table"; String sql = "INSERT INTO my_table(name,mxlist) VALUES (?,?)"; JSONObject json = new JSONObject(); json.put("stmt", sql); String arg = "凯文"; JSONArray d = new JSONArray(); d.add(arg); JSONArray b = new JSONArray(); b.add(o); d.add(b); json.put("args", d); String url = "http://192.168.13.50" + ":" + "4200/_sql?pretty"; System.out.println(url); System.out.println(json); try { HTTPResp resp = client.post(url, json); if (resp == null || resp.getRespCode(-1) != 200) { int errorCode = resp.getRespJson().getJSONObject("error").getIntValue("code"); String errorMsg = resp.getRespJson().getJSONObject("error").getString("message"); logger.error(" ----- execute failed :" + resp.getRespMsg()); } else { logger.info(" ----- execute success"); } System.out.println(resp.getRespJson()); }catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage(), e); }
这样就OK了rest