目录


前言:

在实际开发中,程序需要把 大文本或二进制 数据保存到数据库中;

实际上,我们并不存储大的数据到数据库中,基本上都是存储资源地址进去 ;

但是数据库存储大数据的技术,我们还是要学习一下 ;


基本概念

大数据也被称为 LOB(large object)LOB又分为:clobblob

clob: 用于存储文本。

blob:用于存储二进制数据,例如:图像、电影、声音;

其中对于 Mysql 而言,只有 blob,没有 clobmysql 存储大文本采用的是Text

其中 Textblob 分别又分为:

- TinyText、text、MediumText、LongText
- TinyBlob、blob、MediumBlob、LongBlob (小、正常、中等、大) -----------(百度下各自保存的数据量大小;)

对于MysqlText类型

如果数据库的 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 处理大数据的更多相关文章

  1. JDBC之 大数据内容的传输

    JDBC之 大数据内容的传输 什么是大数据内容? 在数据库中,有一条一条的记录,记录中很多字段都是几个字符就够的,假如现在要把一部小说存入数据库,这本小说当然不是几个字符组成,而是由几万字组成,这本小 ...

  2. 使用Typescript重构axios(十六)——请求和响应数据配置化

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  3. JDBC处理大数据

    1.处理大文本 package com.demo; import java.io.File; import java.io.FileNotFoundException; import java.io. ...

  4. Redis进阶实践之十六 Redis大批量增加数据

    一.介绍      有时,Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据,以便尽可能快地创建数百万个键.这就是所谓的批量插入,本文档的目标是提供有关如何以尽可能快的速度向Redis提 ...

  5. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  6. jQuery-1.9.1源码分析系列(十六)ajax——响应数据处理和api整理

    ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleRespon ...

  7. 十六、React 渲染数据注意事项、以及react-router4.x中使用js跳转路由(登录成功自动跳转首页)

    一.React加载数据流程回顾 先看上一节的产品详情代码:https://blog.csdn.net/u010132177/article/details/103184176 [Pcontent.js ...

  8. Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状

    本文主要介绍国外实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 上篇文章我们采用百度搜索指数来分 ...

  9. JDBC 学习笔记(二)—— 大数据+存储过程+批处理+事务管理

    本文目录:       1.使用JDBC处理大数据        2.使用JDBC处理大文本        3.使用JDBC处理二进制数据        4.Oracle中大数据处理        5 ...

随机推荐

  1. java 架构师思维导图

    java 基础 . 理解IO.多线程.集合等基础框架.对JVM原理有一定了解. spring  spring boot  ibatis   structs开源框架了解. 熟悉分布式系统设计和应用. 小 ...

  2. SpringBoot配置JDBC连接MySql数据库的时候遇到了报错:HikariPool-1 - Exception during pool initialization

    使用SpringBoot做JAVA开发时,JDBC连接MySql数据库的时候遇到了报错: ERROR 10392 --- [ main] com.zaxxer.hikari.pool.HikariPo ...

  3. MapReduce Combiner

    Combiner编程(可选步骤,视情况而定!) combiner最基本是实现本地key的归并,combiner具有类似本地的reduce功能. 如果不用combiner,那么所有的结果都是reduce ...

  4. An error occurred while starting a transaction on the provider connection. See the inner exception for details.

    用EntityFramework循环操作数据时,报了如下错误 An error occurred while starting a transaction on the provider connec ...

  5. Django 配置实用bootstrap

    1.下载bootstrap代码包. 2.在目录下创建static文件夹,将bootstrap文件夹移动到static文件夹内,编辑settings.py: 最后添加如下(文件末尾): STATIC_U ...

  6. (main)贝叶斯统计 | 贝叶斯定理 | 贝叶斯推断 | 贝叶斯线性回归 | Bayes' Theorem

    2019年08月31日更新 看了一篇发在NM上的文章才又明白了贝叶斯方法的重要性和普适性,结合目前最火的DL,会有意想不到的结果. 目前一些最直觉性的理解: 概率的核心就是可能性空间一定,三体世界不会 ...

  7. VGG Net学习笔记

    一.简介 VGG Net由牛津大学的视觉几何组(Visual Geometry Group)和 Google DeepMind公司的研究员一起研发的的深度卷积神经网络,在 ILSVRC 2014 上取 ...

  8. ThinkPHP6.0学习之项目安装页面的开发

    在我们做一个项目的时候,如果是自己用或者是给同行用的话往往不需要做一个安装页面的,但是如果是将项目给一些不怎么会操作服务器,不怎么会程序的人用的时候,我们就需要一个安装页面来帮助他们更好的将项目安装好 ...

  9. Qt编写自定义控件29-颜色选取面板

    一.前言 这个控件主要是模仿QColorDialog对话框中的颜色选取面板,提供一个十字形状的标识器,鼠标按下开始选取颜色,移动到哪就选择该处的颜色值,对应右侧颜色条放大显示,本控件的难点就是如何绘制 ...

  10. Qt编写安防视频监控系统8-双击节点

    一.前言 在所有的视频监控系统中,双击摄像机的节点,对应摄像机加载到当前焦点通道显示,这个都是必须具备的功能,还有一些厂家会做双击NVR节点,自动加载该NVR下的所有摄像机全部显示,从通道1开始到通道 ...