将clob转换为blob

时间:2012-02-12 02:11:00

标签: java sql oracle jdbc

我有一个将PDF文件存储到CLOB列的数据库。我想编写一个java程序来检索它。只使用Clob java类进行检索不起作用。我想我需要将CLOB数据类型转换为BLOB然后写入文件。任何人都可以告诉我如何使用java程序将CLOB转换为BLOB。


这是我的数据库

DOC_ID NOT NULL VARCHAR2(60) 
DOC_NAME NOT NULL VARCHAR2(500) 
DOC_TYPE NOT NULL VARCHAR2(100) 
DOC_CONTENT CLOB() 

我发送DOC_ID以获取Doc_CONTENTDOC_CONTENTdoc_name

存储在我的本地驱动器中

这是我的java代码

PreparedStatement stmnt = conn.prepareStatement("select DOC_CONTENT, DOC_NAME from documentum_docs_queue where doc_id=" + documentid);

        ResultSet rs = stmnt.executeQuery();    
        Clob aBlob = null;
        String filename = "filename";
        while (rs.next()) {             
            try {                   
                aBlob = rs.getClob(1);  
                filename = rs.getString(2);
                //System.out.println("filename-------------- " + filename);
            } catch (Exception ex) {
                ex.printStackTrace();                   
                byte[] bytes = rs.getBytes(1);
            }
        }
        rs.close();
        stmnt.close();

        File blobFile = new File("c:/temp/writer/"+filename);
        //System.out.println("blobFile-------------- " + blobFile);
        FileOutputStream outStream = new FileOutputStream(blobFile);
        InputStream inStream = aBlob.getAsciiStream();

        int length = -1;
        int size = (int) aBlob.length();
        byte[] buffer = new byte[size];

        while ((length = inStream.read(buffer)) != -1) {
            outStream.write(buffer, 0, length);
            outStream.flush();
        }

        inStream.close();
        outStream.close();

1 个答案:

答案 0 :(得分:0)

从CLOB转换为BLOB无济于事。 CLOB是一种文本格式。这意味着,该数据库自动将存储的数据转换为数据库字符集。 PDF是二进制格式,因此存储到数据库中可能会损坏文件。

有必要将文件存储到BLOB列中。