- 浏览: 191608 次
- 性别:
- 来自: 杭州
文章分类
最新评论
ORACLE中的大对象:
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。
对CLOB与BLOB对象的操作
1. 查询(GET)
查询CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
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是读出并需要返回的数据,类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
查询BLOB
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
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是读出并需要返回的数据,类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2. 插入(INSERT)
插入CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
插入BLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组,定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
转自:http://www.blogjava.net/Simmons/articles/333302.html
发表评论
-
oracle树操作,异步查询,子节点过多分批查询
2014-04-11 15:31 1066oracle树操作链接 select ... -
oracle数组游标批量插入
2013-12-07 16:40 3390declare type ary is table ... -
MERGE into (用法笔记)
2013-11-05 14:01 1023MERGE INTO trackedVehicleBus ... -
Oracle 随机取一行数据
2012-11-19 19:34 1383从表中随机取一条数据 select * from ( ... -
(原) ORACLE10g创建SCHEDULER_JOB
2012-08-03 16:07 1723BEGIN SYS.DBMS_SCHEDULER ... -
PL/SQL Developer使用技巧
2012-07-18 14:12 19151、PL/SQL Developer记住登陆密码 ... -
Oracle体系结构之-物理结构(transshipment)
2012-06-16 09:35 885一、物理文件的分类 ... -
oracle Toad使用指南
2012-06-19 08:34 6214一.Toad功能综述二. ... -
oracle Optimizer CBO RBO (优化器)
2012-06-13 08:34 1125Oracle 的优化器有两 ... -
共享锁和排它锁
2012-06-12 08:23 9991.共享锁【S锁】 又称读锁,若事务T对数据对象 ... -
oracle with admin option 和with grant option
2012-06-20 08:29 1611with admin option 用于系统权限授权,w ... -
oracle10 新功能DBMS_SCHEDULER 简介
2012-06-13 08:40 4008Oracle 10g新增了scheduler的功能,功能 ... -
ORACLE 用户自定义异常
2012-06-21 12:57 58981CREATE OR REPLACE PROCEDURE te ... -
ORACLE SGA的结构、功能和一般设置
2012-06-17 08:50 1083System global area(SGA) 是一组共享的内 ... -
oracle中的检查点Ckpt和SCN号
2012-06-12 08:28 5666Checkpoint checkpoint是用来减少在数 ... -
oracle表之间的关联方式
2012-06-14 08:42 1477oracle表之间的关联方 ... -
oracle中使用on delete cascade
2012-06-15 08:38 7808oracle中使用on delete ca ... -
关于oracle的行级锁
2012-06-17 08:52 1037在oracle中,行级锁只对用户正在访问的行进行锁定。 ... -
oracle 10g 创建job 相关-dbms_scheduler.create_job
2012-06-19 08:35 8577grant create job to somebody ... -
PGA与SGA的区别,PGA的功能介绍
2012-06-15 08:39 1286当用户进程连接到数 ...
相关推荐
Oracle数据库中的BLOB(Binary Large Object)字段是用来存储大量二进制数据的,例如图片、文档或音频文件。在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对...
例如,处理`CLOB`字段的查询性能问题、PHP处理`CLOB`的实例、插入和更新`CLOB`数据时的字符串长度限制,以及对超长数据的存储等,这些都是Oracle数据库管理中常见的问题,需要针对性地学习和掌握相应的解决方案。...
在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细介绍如何在.NET环境中处理和传递长度...
在Oracle数据库中,当尝试插入的数据实际值长度超过了所对应字段定义的最大长度时,系统会抛出`ORA-01438`错误。这个错误表明数据精度超过了字段的允许范围,导致插入操作无法完成。这通常发生在字段类型如`NUMBER`...
在Oracle数据库中,CLOB...理解Oracle对不同类型字段的长度限制以及如何有效地处理这些限制是数据库管理员和开发人员必备的技能。通过上述策略,你可以成功地处理超过4000字符限制的问题,从而避免“ORA-01704”错误。
在Oracle数据库中,由于设计上的限制,当需要插入超过4000字节的...总的来说,处理大型数据字段时,无论是Oracle还是SQL Server,都需要根据具体的需求和环境选择合适的插入策略,以确保数据的完整性和系统的稳定性。
在导入过程中,要注意监控进度和错误,及时处理可能出现的问题,如数据类型不匹配、超长字段、空值处理等。 6. **验证和后处理**:导入完成后,通过查询Oracle表来验证数据是否完整无误。如果有问题,可能需要回滚...
oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现
Oracle Data Integrator (ODI) 是一款强大的企业级数据集成工具,主要用于ETL(Extract, Transform, Load)过程。...在ODI11g及后续版本中,这些概念和方法依然适用,体现了ODI在大字段处理方面的兼容性和演进性。
- **错误处理**:在导入过程中可能会遇到错误,如数据不一致、超长字段等,需要设计合理的错误处理策略。 学习资料方面,可以从以下几个角度入手: - **Oracle官方文档**:Oracle的官方文档提供了详细的SQL ...
5. 日期字段处理: MySQL 中日期字段分为 `DATE` 和 `TIME`,而 Oracle 的 `DATE` 字段包含日期和时间信息。在 Oracle 中,可以使用 `SYSDATE` 获取当前系统日期,精确到秒。日期转换函数 `TO_DATE()` 和 `TO_CHAR...
- 超长表名处理方法:从前往后截取每个单词的前三个字母,保留最后一个单词完整,若仍然超长,则保留前面单词的首字母直接与最后一个单词相连。 - 临时表以`TMP`开头,命名格式为`TMP_名字拼音首字母_模块/用途名称`...
在进行数据库操作时,我们经常会遇到处理大数据的情况。特别是在Oracle数据库中,当涉及到17位以上的数字时,可能会出现一个问题:这些大数在查询结果中会以科学计数法的形式显示,而不是常规的数字格式。这不仅会...
在SQL*Loader执行过程中,如果某一字段的实际值长度超过了目标表该列的长度,就会触发此错误。 #### 解决方案 1. **调整目标表列的长度:** 最直接的方法是增加目标表中对应列的长度,使其能够容纳更大的数据量。...
这表明问题可能不在字段长度,而在于Oracle内部处理的缓冲区大小。 Oracle默认的内部缓冲区大小通常是2000 bytes。当尝试插入或更新的数据超过这个限制时,就会出现ORA-01480错误。因此,通过分批更新数据,每次不...
它们决定了数据的结构、大小以及如何进行处理。以下是两种数据库系统中主要数据类型的详细比较: **Oracle 数据类型** 1. **Char**: Char 是一种固定长度的字符串类型,最大长度为 2000 bytes。无论实际输入的数据...
处理不规则数据,即非标准格式或大型对象(LOB)的数据,是Oracle数据库管理中的一个重要方面。本文将详细阐述Oracle中如何存储不规则数据,以及针对不同类型的大数据对象采取的策略。 首先,Oracle提供了多种数据...
网上说用流来处理,没有这么做。这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了。 下面是这段代码: if((temp.length()>=1000)&&(temp.length()<=2000)){ temp=StringUtils.rightPad(temp, 2008); }...
一开始一直以为是hibernate的内部处理上有关联操作导致的删除和更新数据缓慢。所以将原先使用hibernate的saveOrupdate方法,改查jdbc的 sql语句来处理update和delete数据操作。但是依然没效果!!! 怀疑数据库出...
7. LONG:LONG类型用于存储超长字符串,最大长度可达2GB,适合大型文本或文档的存储,但不建议频繁修改,因为可能导致性能下降。 8. RAW:RAW是固定长度的二进制数据类型,最大长度2000字节,用于存储非文本数据,...