Clob数据类型解析及读取转换

请添加图片描述

1.简介

CLOB(Character Large Object) 是指用于存储大型文本数据的数据类型。与之对应的另一个数据类型是 BLOB,指的是二进制大型对象。CLOB 类型在实际应用中非常广泛,尤其是在存储长篇文字、图书、电子邮件以及其他类似数据时,能够提供很大的便利性。

1.1.内容类型

类型描述
文本文档CLOB字段可以存储大型的文本文档,如书籍、说明文档、报告等。这些文本文档通常包含不同的段落、标题、标签、索引等,可以通过CLOB字段进行保存和检索
XML文档XML是一种用于表示结构化数据的标记语言,CLOB字段可以存储包含大量XML标签的文档。XML文档经常使用CLOB字段存储在数据库中,以便进行XML解析、查询和更新操作
JSON数据JSON是一种轻量级的数据交换格式,CLOB字段可以用于存储大量的JSON数据。JSON数据经常用于Web应用程序之间的数据交换,通过CLOB字段可以方便地存储和处理这些数据
日志文件CLOB字段也可用于存储大型的日志文件,如应用程序的运行日志、系统日志、错误日志等。日志文件通常包含大量的文本信息,通过CLOB字段可以有效地保存这些信息并支持快速的查询和分析
HTML文档CLOB字段还可用于存储一些富文本内容,比如HTML文档。HTML文档可以包含各种标签和样式,以实现更丰富的文本格式和布局。通过CLOB字段,可以将HTML文档存储在数据库中,并在需要时进行检索和呈现
长文本字段除以上内容类型外,CLOB字段还可用于存储长度超过数据库普通字段长度(如VARCHAR2)限制的长文本。一些应用场景中,可能需要存储一些包含大量字符的文本内容,例如用户的评论、文章内容等,CLOB字段可以满足这种需求

1.2.存储

  • Oracle 数据库中,可以使用 CLOB 数据类型存储最多 4 GB 的文本。而在其他数据库中,CLOB 的容量限制可能会有所不同。
  • MySQL 中,可以使用 MEDIUMTEXTLONGTEXT 数据类型来存储 CLOB 类型的数据,其中 MEDIUMTEXT 最多可存储 16 MB 的数据,而 LONGTEXT 最多可存储 4 GB 的数据。
  • 于其他数据类型,如 VARCHAR 或 TEXT,CLOB 存储需要更多的空间和资源。CLOB 数据类型需要更大的物理空间,在硬盘和内存方面都需要更多的资源,因此在进行数据存储和读取时可能会略有延迟。但是,相较于其他的数据类型,CLOB 类型能够提供更大的存储空间,并支持更高的性能和扩展性

1.3.优缺点

  • 优点:
    1. 更好的存储能力:CLOB 数据类型能够存储更大的文本数据,可以比 VARCHAR 类型存储更多的字符串。
    2. 更好的数据可读性:由于 CLOB 数据类型存储的是文本类型数据,因此更适合用于存储一些易于阅读的模板或模版化的文本数据。
    3. 更好的应用支持:使用 CLOB 数据类型可以方便地支持诸如邮件和文档等应用类型。
  • 缺点:
    1.更大的存储需求:CLOB 数据类型需要更多的硬件资源,这可能会导致数据库在存储和读取 CLOB 数据时的性能受到影响。
    2. 大量的读写延迟:由于 CLOB 数据类型需要更多的硬件资源,因此读写延迟可能会较大。
    3. 数据存储时的限制:CLOB 数据类型的存储需要在数据库中创建一个单独的列,而且只能用于保存文本数据。

CLOB 数据类型存储需要更多的硬件资源,因此,对于一些要求高效的应用,可能不太适用。但是,从扩展性可读性方面来看,CLOB 数据类型是非常有价值的。它可以存储更多的数据,更容易阅读和支持不同的应用程序

2.读取clob

使用jdbc连接的实例:

 private static List<Map<String, Object>> getList(ResultSet rt) throws SQLException {List<Map<String, Object>> list = new ArrayList<>();ResultSetMetaData md = rt.getMetaData();int columnCount = md.getColumnCount();val colNames = getColNames(md, columnCount);//遍历结构集while (rt.next()) {Map<String, Object> rowData = new LinkedHashMap<>();for (int i = 0; i < columnCount; i++) {val colName = colNames.get(i);Object value = rt.getObject(colName);// 判断是否为Clob数据类型if (value instanceof Clob) {value = parseClob((Clob) value);}rowData.put(colName, value);}list.add(rowData);}return  list;}/***	读取Clob类型的数据并转换为String*/private static String parseClob(Clob clob) {try {Reader is = clob.getCharacterStream();// 得到流BufferedReader br = new BufferedReader(is);String s = br.readLine();StringBuilder sb = new StringBuilder();while (s != null) {sb.append(s);s = br.readLine();}return sb.toString();} catch (SQLException | IOException e) {log.error("clob转换发生异常", e);throw new Exception(clob转换发生异常."+ e.getMessage());}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623448.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JPA (Java Persistence API)

一、Jpa的介绍 JPA &#xff0c;是一套Sun公司Java官方制定的ORM 规范。 ORM&#xff0c;即 对象关系映射 &#xff08;Object Relational Mapping&#xff09;&#xff0c;是一种程序技术&#xff0c;用于 在关系数据库和业务实体对象之间做映射 。ORM 框架的存在&#xff0c;…

007 springboot整合mybatis-plus 增删改查 ModelAndView jsp 分页

文章目录 MybatisplusConfig.javaReceiveAddressController.javaReceiveAddress.javaReceiveAddressMapper.javaReceiveAddressServiceImpl.javaIReceiveAddressService.javaServerResult.javaServletInitializer.javaSpringbootDemoApplication.javareceive_address.sqlReceiv…

python接口自动化测试 —— unittest框架suite、runner详细使用

test suite 测试套件&#xff0c;理解成测试用例集一系列的测试用例&#xff0c;或测试套件&#xff0c;理解成测试用例的集合和测试套件的集合当运行测试套件时&#xff0c;则运行里面添加的所有测试用例 test runner 测试运行器用于执行和输出结果的组件 test suite、tes…

DBUtils工具类的使用

1、DBUtils是什么 为了更加简单地使用JDBC&#xff0c;Apache组织提供了一个DBUtils工具&#xff0c;它是操作数据库的一个组件&#xff0c;实现了对JDBC的简单封装&#xff0c;可以在不影响数据库访问性能的情况下简化JDBC的编码工作量。DBUtils工具要有2个作用。 写数据&am…

Upload-labs(Pass-14 - Pass-16)

Pass-14 &#xff08;图片马&#xff0c;判断文件类型&#xff09; 图片的格式在防护中通常是不会使用后缀进行判断的依据&#xff0c;文件头是文件开头的一段二进制码&#xff0c;不同类型的图片也就会有不同的二进制头。   JPEG (jpg)&#xff0c;文件头&#xff1a;FF D…

C++从入门到精通——类的6个默认成员函数之赋值运算符重载

赋值运算符重载 前言一、运算符重载定义实例注意要点 二、赋值运算符重载赋值运算符重载格式赋值运算符重载要点重载要点传值返回和传址返回要点 三、前置和后置重载 前言 类的6个默认成员函数&#xff1a;如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么…

ESP32S3在wsl环境的JTAG、openocd仿真调试

文章目录 一、准备工作二、添加 ESP-IDF 环境变量三、添加 udev 规则文件四、vscode 配置 一、准备工作 安装配置好 WSL、ubuntu, 参考连接&#xff1a; WSL2安装Ubuntu迁移到其他盘或者其他电脑_wsl ubuntu迁移-CSDN博客 WSL2 设置桥接模式_wsl2 桥接-CSDN博客 下载好 WSL-US…

Python 物联网入门指南(八)

原文&#xff1a;zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第三十章&#xff1a;制作机械臂 最后&#xff0c;我们终于到达了大多数人自本书开始以来就想要到达的地方。制作一个机械臂&#xff01;在…

游戏生成式 AI:编织梦想,避开阴影

想象一下&#xff0c;一个沉浸式的游戏世界中玩家遇到的每个 NPC 都由 AI 驱动&#xff0c;他们能与玩家进行互动&#xff0c;从改变游戏体验。据 Inword 一项研究显示&#xff0c;绝大多数游戏玩家渴望这种互动&#xff0c;愿意投入更多的时间和金钱来玩这种由 AI 驱动的游戏。…

Linux_iptables防火墙学习笔记

文章目录 iptables 概述四表五链iptables 安装启动iptables 配置详解iptables配置文件iptables配置语法iptables常用实例查看规则修改默认规则保存和备份规则恢复备份的规则清空规则放行SSH服务在ubuntu14.04中iptables规则持久化 iptables 概述 主机型 对主机进行保护 网络型…

020——SPI模块驱动开发(基于DAC芯片和I.MX6uLL)

目录 一、 SPI简介 二、 Linux中的SPI 2.1 SPI控制器数据结构 2.2 SPI设备数据结构 2.3 SPI设备驱动 2.4 接口函数 2.4.1 函数原型 2.4.2 函数解析 2.5 SPI驱动框架 2.6 SPI控制器驱动程序 2.7 SPI设备驱动程序 三、 DAC实例 3.1 实验过程 3.2 驱动程序 3.3 应…

Redis--16--Spring Data Redis

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Spring Data Redishttps://spring.io/projects/spring-data-redis 1.依赖2.RedisTemplate3.案例 序列化1.默认是 JdkSerializationRedisSerializer2.添加Redis配置文…