`
wap
  • 浏览: 75092 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转载]oracle里读写clob

阅读更多

闲来无事,想到备份clob数据的问题,就写了两个文件来备份clob, 表结构为:

sql 代码
  1. create table RULESETENTITY   
  2. (   
  3.       ACTIVE NUMBER,   
  4.      DESCRIPTION VARCHAR2(255),   
  5.      JDOCLASS VARCHAR2(255),   
  6.      JDOID NUMBER not null,   
  7.      JDOVERSION NUMBER,   
  8.       LASTMODIFIEDDATE DATE,   
  9.       LASTMODIFIEDUSER VARCHAR2(255),   
  10.       NAME VARCHAR2(255),   
  11.       TYPE VARCHAR2(35),   
  12.       XML CLOB   
  13. )   
  14.   

JAVA程序为:

java 代码
  1. package test;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.FileOutputStream;   
  5. import java.io.IOException;   
  6. import java.io.PrintStream;   
  7. import java.io.Reader;   
  8. import java.sql.Connection;   
  9. import java.sql.DriverManager;   
  10. import java.sql.ResultSet;   
  11. import java.sql.SQLException;   
  12. import java.sql.Statement;   
  13.   
  14. import oracle.sql.CLOB;   
  15.   
  16. public class DbAccess {   
  17. @SuppressWarnings("deprecation")   
  18. public static void main(String args[]) throws SQLException, IOException {   
  19.   
  20. DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());   
  21. Connection conn = DriverManager.getConnection(   
  22. "jdbc:oracle:thin:@10.6.244.5:1521:devdb""servinv1",   
  23. "servinv1");   
  24.   
  25. Statement stmt = conn.createStatement();   
  26.   
  27. try {   
  28.   
  29. ResultSet rs = stmt.executeQuery("select name from rulesetentity");   
  30.   
  31. while (rs.next()) {   
  32. String name = rs.getString("name");   
  33. Statement stmt1 = conn.createStatement();   
  34. ResultSet rset = stmt1   
  35. .executeQuery("select rownum,name,xml from rulesetentity where name='"  
  36. + name + "'");   
  37. while (rset.next()) {   
  38.   
  39. oracle.sql.CLOB clob = (CLOB) ((oracle.jdbc.OracleResultSet) rset)   
  40. .getClob("xml");   
  41. Reader is = clob.getCharacterStream();   
  42. BufferedReader br = new BufferedReader(is);   
  43. String s = br.readLine();   
  44. FileOutputStream fo = new FileOutputStream(name + ".dri");   
  45. PrintStream so = new PrintStream(fo);   
  46. while (s != null) {   
  47. so.println(s);   
  48. s = br.readLine();   
  49. }   
  50. so.close();   
  51. }   
  52. rset.close();   
  53. stmt1.close();   
  54. System.out.println(name);   
  55. }   
  56.   
  57. rs.close();   
  58. catch (Exception e) {   
  59. System.out.println("Error");   
  60. finally {   
  61. stmt.close();   
  62. conn.close();   
  63. }   
  64. }   
  65.   
  66. }   
  67.   

oracle的存储过程为:

sql 代码
  1. create or replace procedure test(rule_name varchar2) is  
  2. bak_file utl_file.file_type;   
  3. rule_xml clob;   
  4.   
  5. filename varchar2(255);   
  6. l_buffer varchar2(32767);   
  7. l_pos INTEGER := 1;   
  8. l_amount BINARY_INTEGER := 1000;   
  9. xml_length integer;   
  10. begin  
  11. --rule_name :='ADDRESS RANGE VALIDATION';   
  12. select xml into rule_xml from rulesetentity where name = rule_name;   
  13. filename := replace(rule_name||'.dri',' ','_');   
  14.   
  15. bak_file := utl_file.fopen('MYTEMP',filename,'w');   
  16. xml_length := dbms_lob.getlength(rule_xml);   
  17.   
  18. dbms_output.put_line(rule_name);   
  19. dbms_output.put_line(filename);   
  20.   
  21.   
  22. dbms_output.put_line(TO_CHAR(xml_length));   
  23.   
  24.   
  25. WHILE l_pos < xml_length LOOP   
  26.   
  27. DBMS_LOB.read(rule_xml,l_amount,l_pos,l_buffer);   
  28. UTL_FILE.put_raw(bak_file, utl_raw.cast_to_raw(l_buffer),true);   
  29. l_pos := l_pos + l_amount;   
  30. END LOOP;   
  31.   
  32. utl_file.fclose(bak_file);   
  33.   
  34. end;   
  35.   


分享到:
评论

相关推荐

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    java存储oracle中的clob类型

    本文主要介绍了在Java中处理Oracle数据库CLOB类型的基本方法,包括CLOB的读写操作、中文编码问题的处理以及一些额外的注意事项。通过这些知识点的学习,可以更高效地完成与Oracle数据库的交互任务。

    Oracle导出Clob,Blob工具

    Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...

    java读写oracle clob字段

    本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和Oracle JDBC驱动库。在上述代码中,我们看到`import oracle.jdbc.driver.OracleDriver;`,这表示我们将使用Oracle...

    运用Java如何存取Oracle中的CLOB类型字段

    在IT领域,尤其是在数据库操作与Java...值得注意的是,尽管示例代码提供了一个基础框架,但在实际应用中可能还需要考虑更多的异常处理和性能优化策略,例如使用事务管理来保证数据一致性,或者优化CLOB数据的读写效率。

    sql server中的image类型的数据导出到oracle的clob字段中

    SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...

    hibernate存取oracle的clob

    Oracle 提供了丰富的 API 来操作 CLOB 类型的数据,例如读写 CLOB 数据等。 #### 2. Hibernate 配置与实体类设计 为了能够通过 Hibernate 来存取 CLOB 数据,我们需要对 Hibernate 进行相应的配置,并且合理地设计...

    Oracle中CLOB类型文字处理代码

    - 管理CLOB数据时要考虑性能,大量读写可能影响效率。 - 避免一次性加载整个CLOB到内存,分块处理更高效。 - 考虑使用BFILE或NCLOB(非Unicode)类型,视具体需求而定。 以上就是Oracle中CLOB类型文字处理的相关...

    asp.net操作oracle clob字段demo

    接下来,我们来创建一个简单的ASP.NET页面,用于演示如何读写CLOB字段。首先,创建一个ASP.NET Web Form,添加一个TextBox控件用于输入或显示CLOB数据,一个Button控件用于执行数据库操作,以及可能需要的其他UI元素...

    oracle中的Blob和Clob区别

    ### Oracle中的BLOB和CLOB的区别 在Oracle数据库中,`BLOB`(Binary Large Object)和`CLOB`(Character Large Object)是用于存储大量数据的两种特殊数据类型。这两种类型都属于`LOB`(Large Object)类别,主要...

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...

    关于oracle中clob字段查询慢的问题及解决方法

    在Oracle数据库中,CLOB(Character Large Object)字段主要用于存储大量文本数据,如XML文档、长篇文章等。然而,由于其大数据量的特性,当涉及到CLOB字段的查询时,性能问题常常会出现,特别是进行模糊查询时。这...

    向Oracle数据库的CLOB属性插入数据报字符串过长错误

    更理想的解决方案是使用数据库提供的API或者存储过程来处理CLOB数据,通过流(Stream)的方式进行大对象的读写,这样可以避免一次性加载整个字符串到内存,有效防止因字符串过长引发的错误。 例如,你可以使用...

    hibernate动态映射表处理oracle的clob类型

    例如,频繁读写CLOB可能导致性能下降,因此在设计系统时要考虑读写频率和数据量。 6. **示例代码**:在Hibernate中,读取和写入CLOB的代码可能如下: ```java // 读取 Clob clob = entity.getLongText(); ...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    以下是如何使用Java读写Oracle数据库中CLOB和BLOB字段的基本步骤: 1. **建立数据库连接**:使用`java.sql.DriverManager.getConnection()`方法,提供数据库URL、用户名和密码来创建`Connection`对象。 2. **创建...

    ado.net读写Oracle大对象

    读写Clob的操作与Blob类似,只是数据类型和处理方式略有不同: ```csharp public void WriteClob(string connectionString, string clobColumnName, string data) { using (var connection = new OracleConnection...

    oracle blob 字段 读写 delphi

    本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如DBExpress或ADO。DBExpress是Delphi内置的一个轻量级数据库访问框架,而...

    jdbc 处理clob类型字段

    在实际应用中,为了提高性能,可能需要使用流式读写CLOB数据,避免一次性加载整个CLOB内容到内存中。Oracle JDBC驱动提供了OracleClob类,支持通过InputStream和OutputStream进行流式操作。 总的来说,处理Oracle...

Global site tag (gtag.js) - Google Analytics