Search in sources :

Example 96 with Clob

use of java.sql.Clob in project tika by apache.

the class JDBCTableReader method handleClob.

protected void handleClob(String tableName, String columnName, int rowNum, ResultSet resultSet, int columnIndex, ContentHandler handler, ParseContext context) throws SQLException, IOException, SAXException {
    Clob clob = resultSet.getClob(columnIndex);
    if (resultSet.wasNull()) {
        return;
    }
    boolean truncated = clob.length() > Integer.MAX_VALUE || clob.length() > maxClobLength;
    int readSize = (clob.length() < maxClobLength ? (int) clob.length() : maxClobLength);
    Metadata m = new Metadata();
    m.set(Database.TABLE_NAME, tableName);
    m.set(Database.COLUMN_NAME, columnName);
    m.set(Database.PREFIX + "ROW_NUM", Integer.toString(rowNum));
    m.set(Database.PREFIX + "IS_CLOB", "true");
    m.set(Database.PREFIX + "CLOB_LENGTH", Long.toString(clob.length()));
    m.set(Database.PREFIX + "IS_CLOB_TRUNCATED", Boolean.toString(truncated));
    m.set(Metadata.CONTENT_TYPE, "text/plain; charset=UTF-8");
    m.set(Metadata.CONTENT_LENGTH, Integer.toString(readSize));
    m.set(TikaMetadataKeys.RESOURCE_NAME_KEY, //just in case something screwy is going on with the column name
    FilenameUtils.normalize(FilenameUtils.getName(columnName + "_" + rowNum + ".txt")));
    //is there a more efficient way to go from a Reader to an InputStream?
    String s = clob.getSubString(0, readSize);
    if (embeddedDocumentUtil.shouldParseEmbedded(m)) {
        embeddedDocumentUtil.parseEmbedded(new ByteArrayInputStream(s.getBytes(UTF_8)), handler, m, true);
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) Metadata(org.apache.tika.metadata.Metadata) Clob(java.sql.Clob)

Aggregations

Clob (java.sql.Clob)96 FilterChainImpl (com.alibaba.druid.filter.FilterChainImpl)27 Blob (java.sql.Blob)24 SQLException (java.sql.SQLException)20 ResultSet (java.sql.ResultSet)16 NClob (java.sql.NClob)14 MockClob (com.alibaba.druid.mock.MockClob)13 ClobProxy (com.alibaba.druid.proxy.jdbc.ClobProxy)13 MockNClob (com.alibaba.druid.mock.MockNClob)12 NClobProxy (com.alibaba.druid.proxy.jdbc.NClobProxy)12 ResultSetProxyImpl (com.alibaba.druid.proxy.jdbc.ResultSetProxyImpl)12 PreparedStatement (java.sql.PreparedStatement)10 IOException (java.io.IOException)8 InputStream (java.io.InputStream)8 Reader (java.io.Reader)7 Test (org.junit.Test)7 StringReader (java.io.StringReader)6 Connection (java.sql.Connection)6 Timestamp (java.sql.Timestamp)5 CUBRIDOIDProxy (com.cubrid.jdbc.proxy.driver.CUBRIDOIDProxy)4