源程序:SerializableBlob sb = (SerializableBlob)s.getStampimage();Blob wrapblob = sb.getWrappedBlob();oracle.sql.BLOB blob = (oracle.sql.BLOB)wrapblob;OutputStream out = blob.getBinaryOutputStream();out.write(s.getStampimagebyte());out.close(); 异常情况:java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB at com.tchzt.cdbank.base.stamp....
1:增加操作publicint addTest(TestVo tv) {byte bz[] = tv.getBz().getBytes();LobHandler lobHandler = new DefaultLobHandler();String sql = "insert into test(name,age,bz) values(?,?,?)";return jdbcTpl.execute(sql,new AbstractLobCreatingPreparedStatementCallback(lobHandler){@Overrideprotectedvoid setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException {ps.setStrin...
因为varchar2最大长度为4000,所以不能直接将blob转为varchar2,这里通过函数将blob返回为table格式来实现:1、创建两个新的type,用于函数返回create or replace type obj_table as object
(name varchar2(2000)
);create or replace type t_table is table of obj_table
2、创建blob转varchar2的函数CREATE OR REPLACE
Function Blob_To_Varchar (id In VARCHAR2) Return t_table
asrs t_table:= t_table();-- 定义上面创建的类型...
最近项目用到了对oracle大字段的读写,小白在这里记录下,方便自己以后用到,也希望对其他朋友有一点帮助。由于项目的原因,这里的blob只是对xml报文的读写,并没有涉及到保存图片等,因此下面涉及的方法可能不全面,如有需要请自行查看其它大神博客。一、读blob这里对blob的读是直接在数据库建了一个函数Blob_To_Varchar ,这样方便项目里面其它地方用到查询blob:CREATEORREPLACEFunction Blob_To_Varchar (Blob_In In Blob) Ret...
Oracle不支持直接通过Database Link复制远程数据库表的CLOB/BLOB字段数据到本地数据库。
像如下的SQL是不能执行的。(ipop_topic表有一个CLOB的字段)
insert into ipop_topicselect * from ipop_topic@prod.us.oracle.com where application_id=1000
但是,我们可以借助全局临时表,先把数据复制到临时表,再从临时表转移到你的目的表。
create global temporary table ipop_topic_tempas select * from ipop_topic@prod.us.oracl...
blob字段,其实是用来存储二进制类型的数据的,比如:大文本、文件、图片等信息直接存放到数据库中的一种解决方案
所以,如果对于新插入的记录,存在blob类型的字段,需要在blob字段中先使用EMPTY_BLOB(),让该条记录先保存到数据库中;
然后,使用更新语句的方式,更新blob字段的值,代码如下:
//构造更新语句:string strSQL="update tablename set Rangecoords=:coords where 查询条件";
//创建oracle参数
byte[] bigTextB...
2.3 如何解决导出clob和blob类型数据报错的问题
当表字段中含有clob和blob类型数据时,使用PL/SQL Developer导出会报stream read error的错误,导出操作终止,说明PL/SQL Developer方式导出不支持这种类型,oracle export方式可以支持这种类型。 由于需要导出的表很多,PL/SQL在导出前都要对需要导出的表进行分析,通常都会花费十几分钟的时间,然而由于某张表存在clob和blob类型数据时就会异常终止,那之前的操作时间就会浪费,为...
也可以像处理普通数据一样对其进行备份和恢复操作。Oracle支持三种类型的内部LOB:
BLOB(二进制数据)
CLOB(单字节字符数据)
NCLOB(多字节字符数据)。
CLOB和NCLOB类型适用于存储超长的文本数据,BLOB字段适用于存储大量的二进制数据,如图像、视频、音频,文件等。目前只支持一种外部LOB类型,即BFILE类型。在数据库内,该类型仅存储数据在操作系统中的位置信息,
而数据的实体以外部文件的形式存在于操作系统的文件系统中...
));SCOTT@orcl> insert into test_raw values(‘<xml><name>Dylan</name><score>100</score></xml>‘);
insert into test_raw values(‘<xml><name>Dylan</name><score>100</score></xml>‘)*
第 1 行出现错误:
ORA-01465: 无效的十六进制数字--这个地方注意是十六进制
SCOTT@orcl> insert into test_raw values(utl_raw.cast_to_raw(‘<xml><name>Dylan</name><score>100</score></xml>‘));已创建 1 行。SCOTT@orcl> commit;--查...
* 接口方法*/public void excuteInputDB(SynchServiceConfig synchServiceConfig)throws Exception {try {
// if(!"".equals(queryQdParaWayinfo()))
// {
// CLOB clob = oracle.sql.CLOB.createTemporary(oraConn, false, oracle.sql.CLOB.DURATION_SESSION);
// clob.putString(1, queryQdParaWayinfo());
//
// insertMyAnnouncement(VALID_WAYINFO_SE...
获得数据库连接 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[...
---恢复内容开始---
1.在IDE中查看blob字段的内容可以采用:
UTL_RAW.CAST_TO_VARCHAR2(blob)的方法,其中blob为表中blob字段的列名。这个方法限定结果不可超过2000字节。
2.
更新blob时,碰到德文乱码问题,最后采用的是在转换为byte[]后,再次转换为new String(ISO-8839-1)就可以oracle中一些关于blob字段的操作标签:本文系统来源:http://www.cnblogs.com/garygeng/p/5256425.html
这里对blob的读是直接在数据库建了一个函数Blob_To_Varchar ,这样方便项目里面其它地方用到查询blob:CREATE OR REPLACE Function Blob_To_Varchar (Blob_In In Blob) Return Varchar2
IsV_Varchar Varchar2(4000);V_Start Pls_Integer := 1;V_Buffer Pls_Integer := 4000;
BeginIf Dbms_Lob.Getlength(Blob_In) Is Null ThenReturn ‘‘;End If;For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop--当转换出来的字符...
UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(xxx,2000,1)) from xxx where xxx = 9667796; 这种sql去转为字符串查看,但是不方便,一次最多转出2000个字节。需要通过index拼成完整的文本。
另外一种情况下,如果存储的是图片、word或其它非文本格式的二进制文档时,就没办法通过上面的方法进行查看了。我这里介绍一种方式可以把Blob保存到数据库服务器所在机器的本地磁盘中去。
存储过程: 1 CREATE OR REPLACE 2 P...
int addTest(TestVo tv) {byte bz[] = tv.getBz().getBytes();LobHandler lobHandler = new DefaultLobHandler();String sql = "insert into test(name,age,bz) values(?,?,?)";return jdbcTpl.execute(sql,new AbstractLobCreatingPreparedStatementCallback(lobHandler){@Overrideprotected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException {ps.setString(1,tv.getName(...