public class TestCLOB {
    static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
    static String driver = "oracle.jdbc.driver.OracleDriver";
    static String userName = "scott";
    static String pwd = "tiger";

    public static void main(String[] args) {
        try {
            addCLOB();
//            readCLOB();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void readCLOB() throws ClassNotFoundException, SQLException, IOException
    {
        Class.forName(driver);// 加载数据库驱动
        Connection con = DriverManager.getConnection(url, userName, pwd);
        con.setAutoCommit(false);
        PreparedStatement pstm = con.prepareStatement("select myClob from p_w_upload where id=1");
        ResultSet rs = pstm.executeQuery();
        CLOB clob = null;
        if(rs.next())
        {
            clob = (CLOB) rs.getClob(1);
        }
        BufferedReader br = new BufferedReader(clob.getCharacterStream());
        
        File file = new File("D:\\aad.txt");
        BufferedWriter bw = new BufferedWriter(new FileWriter(file));
        String s = null;
        while((s = br.readLine())!=null)
        {
            bw.write(s);
            bw.newLine();
        }
        
        bw.close();
        br.close();
        con.close();
    }
    
    public static void addCLOB() throws ClassNotFoundException, SQLException, IOException {
        Class.forName(driver);// 加载数据库驱动
        Connection con = DriverManager.getConnection(url, userName, pwd);
        con.setAutoCommit(false);
        Statement stmt = con.createStatement();
        String initSql = "UPDATE ATTACHMENT SET MYCLOB=EMPTY_CLOB() WHERE ID=1";
        // 读取CLOB字段
        String updateSql = "SELECT MYCLOB FROM ATTACHMENT WHERE ID=1";
        stmt.executeUpdate(initSql);
        ResultSet rs = stmt.executeQuery(updateSql);
        if (rs.next()) {
            CLOB clob = (CLOB) rs.getClob(1); // 获取CLOB字段内容并转换为oracle.sql.CLOB类型
            Writer os = clob.setCharacterStream(1);  // 获取CLOB的输出流
            BufferedReader br = new BufferedReader(new FileReader(new File("F:\\abc.txt")));  // 读取文本文件
            String line = br.readLine();
            StringBuffer buffer = new StringBuffer();
            while (line != null) {
                buffer.append(line+"\r\n");
                line = br.readLine();
            }
            os.write(buffer.toString());
            os.flush();
            br.close();
            os.close();
            con.commit();
            con.close();
        }
        System.out.println("Saved");
    }
}