cratedb rest insert object

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

相關文章
相關標籤/搜索