一、区别和定义
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
LONG RAW: 可变长二进制数据,最长2G
CLOB: 字符大对象Clob 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数据
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复.
CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制
要保存图片、文本文件、Word文件各自最好用哪种数据类型?
--BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。
二、操作
1、 get
CLOB
java 代码
-
- Connection con = ConnectionFactory.getConnection();
- con.setAutoCommit(false);
- Statement st = con.createStatement();
-
- ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
- if (rs.next())
- {
- java.sql.Clob clob = rs.getClob("CLOBATTR");
- Reader inStream = clob.getCharacterStream();
- char[] c = new char[(int) clob.length()];
- inStream.read(c);
-
- data = new String(c);
- inStream.close();
- }
- inStream.close();
- con.commit();
- con.close();
-
BLOB
java 代码
-
- Connection con = ConnectionFactory.getConnection();
- con.setAutoCommit(false);
- Statement st = con.createStatement();
-
- ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
- if (rs.next())
- {
- java.sql.Blob blob = rs.getBlob("BLOBATTR");
- InputStream inStream = blob.getBinaryStream();
-
- data = new byte[input.available()];
- inStream.read(data);
- inStream.close();
- }
- inStream.close();
- con.commit();
- con.close();
2、 put
CLOB
java 代码
-
- Connection con = ConnectionFactory.getConnection();
- con.setAutoCommit(false);
- Statement st = con.createStatement();
-
- st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
-
- ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
- if (rs.next())
- {
-
- oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
- Writer outStream = clob.getCharacterOutputStream();
-
- char[] c = data.toCharArray();
- outStream.write(c, 0, c.length);
- }
- outStream.flush();
- outStream.close();
- con.commit();
- con.close();
-
BLOB
java 代码
-
- Connection con = ConnectionFactory.getConnection();
- con.setAutoCommit(false);
- Statement st = con.createStatement();
-
- st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
-
- ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
- if (rs.next())
- {
-
- oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
- OutputStream outStream = blob.getBinaryOutputStream();
-
- outStream.write(data, 0, data.length);
- }
- outStream.flush();
- outStream.close();
- con.commit();
- con.close();
分享到:
相关推荐
oracle Blob转换Clob
oracle中的Blob和Clob区别,希望对大家学习有帮助呵
简单写的一个小工具,把图片存入oracle中,按clob和blob两种方式存储,并读取图片
UTL_RAW.CAST_TO_VARCHAR2
BLOB和CLOB的区别以及在ORALCE中的插入和查询操作
oracle Blob Clob 大数处理 代码 文件上传 下载
对非DB2数据库的数据复制, 不直接支持LOB(BLOB,ClOB)等大对象数据类型,但在实际应用中,用户需要复制的表中有可能有BLOB等大对象数据,如果数据目标为Oracle,这类大对象复制的需求可通过对WII的复制进行特殊配置实现...
Oracle导出Clob,Blob等大字段工具,自己写的工具,方便大家下载使用
oracle中使用jdbc读写clob字段,很多细节介绍,内容全面。
Mybatis 处理 CLOB、BLOB 类型数据
Oracle导出Clob,Blob工具 ,支持导出CLob工具版本2,解决上个版本导出时间有问题的bug
ORACLE中CLOB字段转String类型
weblogic下转换oracle 的clob类型经常报转型错误,本例子通过反射解决weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转型成oracle.sql.CLOB问题
从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
NULL 博文链接:https://shihuan830619.iteye.com/blog/1662937
oracle对大对象类型操作:blob,clob,nclob,bfile
前两个例子的Demo 博文链接:https://zhangguanzhong.iteye.com/blog/623489
完整通过JAVA读写ORACLE中CLOB、BLOB字段的方法,提供数据库连接池的方法
Oracle slq bolb转换Base64 CLOB