конвертировать сгусток в блоб - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть БД, которая хранит PDF-файлы в столбце CLOB.Я хочу написать программу Java, чтобы получить ее.Просто использование Java-класса Clob для извлечения не работает.Я думаю, что мне нужно преобразовать тип данных CLOB в BLOB, а затем записать в файл.Может кто-нибудь сказать мне, как конвертировать CLOB в BLOB с помощью Java-программы.


Вот мой БД

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

Я посылаю DOC_ID, чтобы получить Doc_CONTENT,DOC_CONTENT будет храниться на моем локальном диске как doc_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 голосов
/ 29 февраля 2012

Преобразование из CLOB в BLOB не поможет. CLOB - это текстовый формат. Это означает, что база данных автоматически преобразует хранимые данные в набор символов базы данных. PDF - это двоичный формат, поэтому файлы, вероятно, повреждены при хранении в базе данных.

Необходимо хранить файлы в столбцах BLOB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...