• (十六)JDBC 处理大数据


    目录


    前言:

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

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

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


    基本概念

    大数据也被称为 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
    
    -------------------- 作者: 淮左白衣 
    
  • 相关阅读:
    Python time ctime()方法
    Python time clock()方法
    Python time asctime()方法
    Python time altzone()方法
    Python 日期和时间
    java——字符串常量池、字符串函数以及static关键字的使用、数组的一些操作函数、math函数
    java——API
    java——类、对象、private、this关键字
    Java——方法及构造方法、intellij IDEA中的一些快捷键
    IntelliJ IDEA 运行java程序时出现“程序发生找不到或无法加载主类 cn.test1.test1”错误
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665705.html
Copyright © 2020-2023  润新知