数组格式在数据库中并不是常用操作,比较常用的是字符串存储后,使用时再进行数据加工.这里记录下直接操作postgres insert数组的数据操作.

表结构

CREATE TABLE schema.table(
	report_rows json NULL,
	series _varchar NULL
)

实际存在两种数组结构:1 字符串数组 2 json数组. json数组使用json进行存储,也可以是jsonb二进制存储方式,但是二进制数据虽然更快,但在数据库中不直观,这里就使用了json.

方式1: 指定数组数据类型

    @Data
    public static class SelfData {
        public String[] series;
        public JsonNode report_rows;
    }

    public void insertArrayTopostgres() {
        String dataStr="{\"series\":[\"2024/06/18 00:00:00\"],\"rows\":[{\"sum\":[34517],\"values\":[[204],[132]],\"byValue\":[\"i am robot\"]}]}";
        SelfData selfData = JsonUtils.parseStr(dataStr, SelfData.class);

        String url2 = "jdbc:postgresql://localhost:5432/mydatabase";
        String user = "myuser";
        String password = "mypassword";

        try (Connection connection = DriverManager.getConnection(url2, user, password)) {
            // json存储要求是json字符串格式
            String jsonRows = objectMapper.writeValueAsString(selfData.getReport_rows());
            // 这里是数据库数组类型(java.sql.Array)的关键处理. "varchar"用于指定数组内的数据类型 selfData.getSeries()是实际的数据
            Array series = connection.createArrayOf("varchar", selfData.getSeries());
            String sql = "INSERT INTO schema.table (report_rows, series) VALUES(?, ?)";
            try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
                preparedStatement.setObject(1, jsonRows);
                preparedStatement.setArray(2, series);
                preparedStatement.executeUpdate();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

数据库实际存储效果

方式2: sql中直接指定数据类型,不在代码中进行类型指定

     Object execute = jdbcTemplatePostgres.execute("INSERT INTO schema.table (report_rows, series) VALUES(?::json, ?::_varchar);", new PreparedStatementCallback<Object>() {
          @Override
          public Object doInPreparedStatement(PreparedStatement ps) throws SQLException {
              String[] split = "report_rows, series".split(",");
              for (int i = 0; i < split.length; i++) {
                  ps.setObject(i + 1, ReflectUtils.getFieldValue(data, split[i].trim()));
              }
              return ps.executeUpdate();
          }
      });

代码实现上很简单.sql语句才是精髓: INSERT INTO schema.table (report_rows, series) VALUES(?::json, ?::_varchar);

posted @ 2024-06-20 15:58 橙木鱼 阅读(59) 评论(0) 推荐(0) 编辑
摘要: kettle/ckettle将指定字段进行对称加解密操作 阅读全文
posted @ 2023-11-01 18:23 橙木鱼 阅读(1530) 评论(0) 推荐(0) 编辑
摘要: 官方最新镜像不是最新版本,这里构建最新版本镜像,并添加jprofiler,便于服务异常监控. 下载最新版本kettlepack后获取其部署文件并替换当前镜像中的文件. Dockerfile: FROM registry.cn-hangzhou.aliyuncs.com/congjing/kettle 阅读全文
posted @ 2022-08-16 13:50 橙木鱼 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 参数优化 nginx配置文件主要分三个部分: 全局块,events块,http块 全局块: 从配置开头到events块间的部分.定义影响整个nginx运行的配置.nginx进程数(CPU总核数) events块: 定义服务器和用户网络连接. http块: nginx服务器的核心配置.用于定义实际的请 阅读全文
posted @ 2022-07-24 21:47 橙木鱼 阅读(606) 评论(0) 推荐(0) 编辑
摘要: nginx Nginx (engine x) 是一个轻量级的高性能的基于 Http 的反向代理服务器,静态web服务器。 高并发:nginx 工作模式是master-worker进程方式,执行请求是有更轻量线程完成。 低消耗 热部署 高可用:worker异常可以由其他worker接替 高扩展:ngi 阅读全文
posted @ 2022-07-24 21:44 橙木鱼 阅读(376) 评论(0) 推荐(0) 编辑
摘要: HikariCP连接超时问题: hikari 连接池是一个非常优秀的连接池,但是我在实际的使用中发现查询后连接一直被占用无法释放已使用的连接,一度怀疑连接池存在bug,具体异常信息以及问题原因整理如下: 连接池配置信息: spring: datasource: driver-class-name: 阅读全文
posted @ 2022-07-23 16:10 橙木鱼 阅读(13549) 评论(0) 推荐(0) 编辑
摘要: linux sqlserver数据库连接问题 异常提示: The server selected protocol version TLS10 is not accepted by client preferences[TLS12] 问题原因: 客户端引用的协议版本是TLS12,但是服务端协议版本是 阅读全文
posted @ 2022-07-04 18:29 橙木鱼 阅读(9488) 评论(0) 推荐(0) 编辑
摘要: maven版本管理 版本管理(Version Management): 项目整体版本的演变过程管理.如1.0-SNAPSHOT → 1.0 → 1.1-SNAPSHOT 版本控制(Version Control): 指借助版本控制工具(svn,git)追踪代码的每一次变更. 版本管理 发布版(Rel 阅读全文
posted @ 2022-04-19 11:24 橙木鱼 阅读(1376) 评论(0) 推荐(0) 编辑
摘要: 自定义maven插件 maven的价值除了它的版本管理,依赖管理,以及规范化java代码结构之外,它丰富且易用的插件也是非常重要的特性.下面我们就来自定义一个maven插件.来进一步认识maven. maven插件开发流程 创建maven插件项目 编写maven目标(goal) 提供maven扩展配 阅读全文
posted @ 2022-03-12 16:39 橙木鱼 阅读(869) 评论(0) 推荐(0) 编辑
摘要: dremio docker 镜像版本 TAG latest docker pull dremio/dremio-oss:latest Last pushed a month ago by ryantse DIGEST OS/ARCH COMPRESSED SIZE dd9f3c376226 linu 阅读全文
posted @ 2022-03-10 21:20 橙木鱼 阅读(267) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示