首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vertx JDBC处理程序批量插入数组

使用Vertx JDBC处理程序批量插入数组
EN

Stack Overflow用户
提问于 2017-02-15 21:45:40
回答 1查看 963关注 0票数 1

我使用的是vertx的JDBC lib,我需要批量插入包含数组字段的值。

我已经尝试过了:

代码语言:javascript
复制
 String query = "UPSERT INTO " + TABLENAME + " (ID, NODES) VALUES (?,?)";
            JsonArray param= new JsonArray();
            param.add(currentUser.getId().toString());
            param.add(new JsonArray(currentUser.getNodes()));
            List<JsonArray> params = new ArrayList<>();
            params.add(param);

我的输出:

代码语言:javascript
复制
    UPSERT INTO USER (ID, NODES) VALUES (?,?)
    [["4ec99c96-7ece-34df-9da0-c42e18f9ec51",["9385fe01-980b-3fb1-b911-7cc3a62c028b","1a05f21a-5278-3d2c-8ee1-b8fd44059e5b","a0b34f81-ef77-3eb2-9c81-8841b9277dd8","2e2ebd32-a7a9-38c8-9b35-b7d1c9b97335","7384ac4c-9796-38b1-8069-45bfc57f1beb","19afe185-8b2a-324e-a8e1-0861a0df8d40","e5efd51e-cc8f-348c-a975-5a25ac9f3321","b9bd2bf0-a581-31a5-a4ca-531cfd0420a1","97200212-af2a-3db9-bfe9-c7a9e09da278","919b6f2a-25f9-32d4-bae3-1a270a1e7e6d","a5271df9-aee2-36ae-85ff-b706cac8be2d","b9ad27fd-28b6-3463-b3e9-1e98e0e3c0e1","37c3790a-cd1d-3d1a-91e4-95fbcd25c592","d3b74229-5b18-3e3e-863e-1b56c2e024ba","331f9940-39ce-3af2-b9ba-cfb6d08066bf","14ee65c5-d48c-3c85-ae9e-639c918af5bd","f81898a1-aad9-34bf-ab3f-e7c314c74a81","48adeeeb-8301-39d3-bfd9-9e5557504b55","68f1d824-1c62-3d6d-a529-ef15cda96ad1"]]]

在切换到准备好的语句之前,我的工作要求是:

代码语言:javascript
复制
 String query = "UPSERT INTO " + TABLENAME + " (ID, NODES) VALUES ('id',ARRAY['1','2'])";



phoenixSharedJDBCClient.getConnection(conn -> {

            if (conn.succeeded()) {

                SQLConnection connection = conn.result();

                connection.batchWithParams(query,params, res -> {

                    if (res.succeeded()) {
                        resultHandler.handle(Future.succeededFuture(Boolean.TRUE));
                    } else if (res.failed()) {
                        resultHandler.handle(Future.failedFuture("Prepared statement request: "+res.cause().getMessage()));
                    }
                });
                connection.close();
            } 

我的数据库是Apache Phoenix,一个用于Hbase的sql层。

你知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-17 18:09:44

目前,vert.x JDBC客户端不能处理数组,因为底层JDBC API要求数组中的数据类型在开始时是已知的,而我们无法从JSON中检测到它。

有人试图解决这个问题:https://github.com/vert-x3/vertx-jdbc-client/commit/3ea6103f4d698137da533522f2c3d4096522f8c6,但它是特定于关系型数据库的,它适用于Postgres,因为当处理空数组时,oid引用总是被接受的,但(据我所知)其他关系型数据库没有这样的东西。

因此,遗憾的是,在我们能够改进当前的API之前,您仍然需要依赖您的字符串连接,或者本着开源的精神,帮助我们讨论用例并集思广益,如何解决它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42251119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档