(十六)JDBC 处理大数据
目录
前言:
在实际开发中,程序需要把 大文本或二进制 数据保存到数据库中;
实际上,我们并不存储大的数据到数据库中,基本上都是存储资源地址进去 ;
但是数据库存储大数据的技术,我们还是要学习一下 ;
基本概念
大数据也被称为 LOB(large object),LOB又分为:clob 和 blob 。
clob: 用于存储文本。
blob:用于存储二进制数据,例如:图像、电影、声音;
其中对于 Mysql 而言,只有 blob,没有 clob,mysql 存储大文本采用的是Text;
其中 Text 和 blob 分别又分为:
- TinyText、text、MediumText、LongText
- TinyBlob、blob、MediumBlob、LongBlob (小、正常、中等、大)
-----------(百度下各自保存的数据量大小;)
对于Mysql的Text类型
如果数据库的 x 列是大文本类型,要为其赋值 ;
- 调用下面的语句为其赋值语句;
PreparedStatement.setCharacterStream(index、reader、length);
参数讲解:
index是占位符的角标(从 1 开始计数) ;reader与文本关联的流;大数据的处理只能通过流。不能直接字符串赋值,比如有个大文本100M。 要是直接用字符串那么一次性加载100M进内存,,疯了的操作
length长度必须设置,而且必须设置为int类型;
对Mysql中的Text类型,可调用如下 三种 方法获取:
reader = resultSet.getCharacterStream(i);
reader = resultSet.getClob(i).getCharacterStream();
// 不可取,文本数据很大的话,会占用巨大的内存
String s = resultSet.getString() ;
流地址的写法
其中 java 普通的 IO,在 se 的项目中,相对路径 是 相对路径相对的是当前项目, 也就是地址直接从包名开始写 (这个包名需要从 src 开始写,与类加载器读取的时候,包名开始写不一样,类加载器读取文件,不需要加上 src );
而在 ee 的项目中,其相对路径则是相对 JDK 所在路径;用相对路径,根本没得写;
不要忘记了码表问题;fileReader 是默认码表是本地平台码表,不能改变了,如果想要更改码表读取,只能用 inputStreamReader ;
blob类型数据
赋值:
PreparedStatement setBinaryStream(i,iuputStream,length) ; // Binary 二进制意思
取值(二种方法 2选1):
InputStream in = resultSet.getBinaryStream(i) ;
InputStream in = resultSet.getBlob(i).getBinaryStream() ;
备注
虽然学了,这个技术,但是我们一般不会用的,前言里面提到了,不在数据可里面存储过大的数据,否则访问数据库资源的时候,一个连接就会被占用太多时间,数据库连接是宝贵的,不能这样做。
我们一般都是在数据库中存个地址,保存资源的地址 ;
------------------- 写于 2018年6月12日18:22:56
-------------------- 作者: 淮左白衣
(十六)JDBC 处理大数据的更多相关文章
- JDBC之 大数据内容的传输
JDBC之 大数据内容的传输 什么是大数据内容? 在数据库中,有一条一条的记录,记录中很多字段都是几个字符就够的,假如现在要把一部小说存入数据库,这本小说当然不是几个字符组成,而是由几万字组成,这本小 ...
- 使用Typescript重构axios(十六)——请求和响应数据配置化
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- JDBC处理大数据
1.处理大文本 package com.demo; import java.io.File; import java.io.FileNotFoundException; import java.io. ...
- Redis进阶实践之十六 Redis大批量增加数据
一.介绍 有时,Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据,以便尽可能快地创建数百万个键.这就是所谓的批量插入,本文档的目标是提供有关如何以尽可能快的速度向Redis提 ...
- Java基础学习笔记二十六 JDBC
什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...
- jQuery-1.9.1源码分析系列(十六)ajax——响应数据处理和api整理
ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleRespon ...
- 十六、React 渲染数据注意事项、以及react-router4.x中使用js跳转路由(登录成功自动跳转首页)
一.React加载数据流程回顾 先看上一节的产品详情代码:https://blog.csdn.net/u010132177/article/details/103184176 [Pcontent.js ...
- Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状
本文主要介绍国外实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 上篇文章我们采用百度搜索指数来分 ...
- JDBC 学习笔记(二)—— 大数据+存储过程+批处理+事务管理
本文目录: 1.使用JDBC处理大数据 2.使用JDBC处理大文本 3.使用JDBC处理二进制数据 4.Oracle中大数据处理 5 ...
随机推荐
- ZROI NOI2019集训汇总
Day1 T1:已改但咕了(下午就补,没力气写了...) T2:未改 T3:未改 Day2 T1:在这里 T2:未改 T3:在这里 Day3 T1:在这里 T2:博客写在了本地,结果被数据清空了... ...
- 牛顿法与拟牛顿法(三) DFP算法
转自 https://blog.csdn.net/itplus/article/details/21896981
- 设置Win10默认启动的Linux子系统版本,启动指定Linux发行版
设置Win10默认启动的Linux子系统版本,启动指定Linux发行版 MS酋长一年前已经与大家分享了启用“适用于Linux的Windows子系统(WSL)”的方法,但当时所能安装的只有由Cano ...
- Android 显示系统:飞思卡尔平台图形界面与GPU硬件加速
图形是Android平台中的一个大主题,包含java/jni图形框架和2d/3d图形引擎(skia.OpenGL-ES.renderscript). 本文档描述了飞思卡尔设备上的一般Android图形 ...
- springboot动态定时任务
SpringBoot设置动态定时任务 一.说明 1.在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置. 2.定时任务执行时间可根据数据库中某个设置字段动 ...
- Java 正则判断一个字符串中是否包含中文
使用正则判断一个字符串中是否包含中文或者中文字符 代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...
- 关于对VGA、DVI、HDMI的区别
VGA接口: DVI接口: HDMI接口 可以这么理解: 1. VGA传输普通视频信号,DVI传输高清视频信号,HDMI传输高清视频信号并支持音频传输.2. HDMI的三种接口只有大小区别,功能没有任 ...
- 游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路
附 文 文档在今年三月份我动笔写了一小部分,但当时思路凌乱,行文梗阻,于是丢在一边构思了半年,现在又回过头来慢慢写,希望能写好写完吧,初衷是希望即时萌新也能看懂,但是好像并不能行——本 ...
- [C++]哈夫曼树(最优满二叉树) / 哈夫曼编码(贪心算法)
一 哈夫曼树 1.1 基本概念 算法思想 贪心算法(以局部最优,谋求全局最优) 适用范围 1 [(约束)可行]:它必须满足问题的约束 2 [局部最优]它是当前步骤中所有可行选择中最佳的局部选择 3 [ ...
- mysql left join对于索引不生效的问题
SELECT t.val, m.username FROM test.tmp_table AS t LEFT JOIN cehome.uc_members AS m USE INDEX(`mobil ...