先定義一個數據表: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