目录


前言:

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

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

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


基本概念

大数据也被称为 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. 以8位并行数据为例确定crc-32的一般矩阵表示形式

    在进行数据校验时我们会使用到crc(循环冗余校验)校验的方式,例如在以太网通信网络中会对信息进行编码和校验,生成码采用的就是33位的 crc-32:x32+x26+x23+...+x2+x+1; (1 ...

  2. 泰乐事(Telos)白皮书中文版 <一> 泰乐事项目(未完成)

    泰乐事项目 一个可持续发展的去中心化EOSIO网络 EOS系统在设计上为人们带来了令人惊喜的一种实现新经济模式的承诺.然而很不幸,其高度中心化的运营正不断地破坏这种承诺.90%的EOS代币掌握在仅仅1 ...

  3. Linux监控工具介绍系列——iostat

    文章转自:https://www.cnblogs.com/ghj1976/p/5691857.html Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iost ...

  4. CentOS6.8安装Docker

    在CentOS6.8上安装Docker 1.Docker使用EPEL发布,RHEL系的OS首先要确保已经持有EPEL仓库,否则先检查OS的版本,然后安装相应的EOEL包:如下命令: yum insta ...

  5. 一步一步学习FastJson1.2.47远程命令执行漏洞

    本文首发于先知:https://xz.aliyun.com/t/6914 漏洞分析 FastJson1.2.24 RCE 在分析1.2.47的RCE之前先对FastJson1.2.24版本中的RCE进 ...

  6. 重读APUE(11)-信号安全的可重入函数

    重入时间点 进程捕捉到信号并对其进行处理时,进程正在执行的正常指令序列就会被信号处理程序临时中断,它首先执行该信号粗合理程序中的指令:如果从信号处理程序返回,则继续执行捕捉到信号时进程正在执行的正常指 ...

  7. 创建createElement

    let oDiv = { tag:'div',  props:{ id:'box' } }:   let oP = createElement('p',{'class':'list'},['周一']) ...

  8. nodeJS 项目如何运行

    nodeJS 项目如何运行 一.总结 一句话总结: nodejs项目根目录中用node xx.js 或是 node xx运行 打开 window的 cmd 命令窗口,使用 cd 命令跳转到 nodeJ ...

  9. Installing the Solidity Compiler¶

    Versioning¶ Solidity versions follow semantic versioning and in addition to releases, nightly develo ...

  10. C++重写(覆盖)、重载、重定义、多态

    1 重写(覆盖)override override是重写(覆盖)了一个方法,以实现不同的功能.一般用于子类在继承父类时,重写(覆盖)父类中的方法.函数特征相同,但是具体实现不同. 重写需要注意: 被重 ...