Oracle Clob¸¦ ÀÌ¿ëÇÑ ¿¹Á¦
ÀÛ¼ºÀÚ °ü¸®ÀÚ ÀÛ¼º½Ã°£ 2009-03-17 16:02:12
 

Oracle Clob¸¦ ÀÌ¿ëÇÑ ¿¹Á¦(Á¤¹Îö)


Oracle 9i clob Type 

Oracle 8i ÀÌÀü ¹öÀü¿¡¼­ ´ë¿ë·® 󸮴 long ŸÀÔÀ¸·Î 󸮸¦ ÇÒ ¼ö ¹Û¿¡ ¾ø¾úÀ¸¸ç,
ÀÌ Ä®·³Àº ÇÑÅ×ÀÌºí¿¡ Çϳª¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç (ÃÖ´ë Å©±â 2GB) ´õ±º´Ù³ª °Ë»öÀ» ±¸Çö
ÇϱⰡ ³Ê¹« ¾î·Á¿ö Æ÷±â¸¦ ÇØ¾ß ¸¸ Çß½À´Ï´Ù.

±×·¡¼­ ÀÌ·± ¹®Á¦¸¦ º¸¾ÈÇϱâ À§ÇØ ³ª¿Â °ÍÀÌ ¹Ù·Î Oracle 8iºÎÅÍ Áö¿øµÇ´Â ´ë¿ë·® µ¥
ÀÌÅÍ ÀúÀå ŸÀÔÀÎ Lob(Large Object) Type ÀÔ´Ï´Ù..
 
Lob ŸÀÔÀº Å×ÀÌºí¿¡ ¿©·¯°³ÀÇ Ä÷³À» »ý¼ºÇÒ ¼ö ÀÖÀ¸¸ç (ÃÖ´ë Å©±â 4GB) ¶ÇÇÑ long 
ŸÀÔº¸´Ù ÈξÀ ½¬¿î °Ë»ö±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
 
Lob typeÀÇ Á¾·ù·Î´Â ÀÌÁø ¹ÙÀ̳ʸ® µ¥ÀÌÅÍÀÇ ÀúÀå½Ã »ç¿ëµÇ´Â Blob (Binary Large Object)¿Í
¹®¼­ µ¥ÀÌÅÍÀÇ ÀúÀå½Ã »ç¿ëµÇ´Â Clob (Character Large Object) ±×¸®°í
¿ÜºÎ ÆÄÀÏ¿¡ ÀúÀåµÈ ÀÌÁø µ¥ÀÌÅͰ¡ ÀÖ´Â °æ·ÎÀÇ ÀúÀå½Ã »ç¿ëµÇ´Â BFILE °¡ ÀÖ½À´Ï´Ù.

 
±×·³ ÀÌÁß¿¡¼­ Clob¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

 
---------------
Clob¿¡ ÀúÀåÇϱâ
---------------

Clob ºÎ¿¬ ¼³¸íÀ» ÇÑ´Ù¸é, ¸ÕÀú ´Ù¸¥ µ¥ÀÌÅ͵éÀ» ¸ÕÀú µ¥ÀÌÅͺ£À̽º¿¡ ³Ö°í ±× ´ÙÀ½ clob
ŸÀÔÀÇ µ¥ÀÌÅ͸¦ update ÇØÁÖ´Â ¹æ½ÄÀÔ´Ï´Ù.
±×·³ ÀÚ¼¼È÷ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

*Âü°í:Àú´Â DBConnect¶ó´Â ÀÚ¹ÙºóÁ »ç¿ëÇÏ¿© Oracle¿¡ Á¢¼ÓÇÏ¿´½À´Ï´Ù.

<jsp:useBean id="dbconn" class="jspBean.DBConnect" scope="application" />

    Connection  conn    = dbconn.getConnection(); 
          // ÀÚ¹ÙºóÁî·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼Ç ¹Þ±â
    conn.setAutoCommit(false); 
          // ClobÀÇ °¡Àå Áß¿äÇÑ ºÎºÐ ÀÔ´Ï´Ù.
          // ¹Ýµå½Ã CLOB columnÀ» ¾÷µ¥ÀÌÆ® Çϴµ¿¾È ´Ù¸¥ processÀÇ Á¢±ÙÀ» 
          //¸·±âÀ§ÇØ setAutoCommit(false)¸¦ ¹Ýµå½Ã ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. 
 
    Statement  stmt    = null;  // SQL ±¸¹® ½ÇÇàÀ» À§ÇÑ Statement ¼±¾ð
   
    try {
        stmt    = conn.createStatement();  // Ä¿³Ø¼ÇÀ¸·ÎºÎÅÍ Statement »ý¼º
    } catch(SQLException e) {
    }
   
    query = "INSERT INTO gongzi VALUES (seq_gongzi_id.nextval,";
    query = query + "?,?,?,?,?,sysdate,empty_clob(),0,seq_gongzi_id.currval,?,?,?)";
          // empty_clob() ¸¦ ÀÌ¿ëÇÏ¿© °ø°£À» È®º¸Çϸ鼭 insert ÇÕ´Ï´Ù.

    PreparedStatement ps = conn.prepareStatement(query);
      ps.setString(1, subject);
      ps.setString(2, name);
      ps.setString(3, password);
      ps.setString(4, email);
      ps.setString(5, homepage);
      ps.setInt(6, step);
      ps.setInt(7, position);
      ps.setString(8,ip);
   
    try {
      ps.executeUpdate();
    } catch(SQLException e) {
    }
    ps.close();
   
    query = "select contents from gongzi where id = (select max(id) from gongzi)";
          //À§¿¡¼­ InsertÇÑ µ¥ÀÌÅ͸¦ ´Ù½Ã °¡Á®¿É´Ï´Ù.

    ps = conn.prepareStatement(query);
    rs = ps.executeQuery();
    if(rs.next()) {
      CLOB clob = ((OracleResultSet)rs).getCLOB(1);       
      Writer writer = clob.getCharacterOutputStream();
      Reader src = new CharArrayReader(contents.toCharArray());
      char[] buffer = new char[1024];
      int read = 0;
      while ( (read = src.read(buffer,0,1024)) != -1) {
            writer.write(buffer, 0, read); // write clob.
      }
      src.close();       
      writer.close();
    }
    conn.commit();
          // CLOB column¿¡ µ¥ÀÌÅÍÀ» ÀúÀåÇÏ¿´´Ù¸é commit()À» ½ÇÇà½Ã۰í 
    conn.setAutoCommit(true); 
          // conn.setAutoCommit(true)·Î ´Ù½Ã ¼³Á¤ÇÕ´Ï´Ù. 
     
    response.sendRedirect("list.jsp");
 



-------------
Clob ºÒ·¯¿À±â
-------------

    query = "SELECT * FROM gongzi WHERE id = "+id ;

    try {
rs = stmt.executeQuery(query);
    } catch(SQLException e) {
    }
    rs.next();

    String ip = rs.getString("ip");
    String subject = rs.getString("subject");
    String name = rs.getString("name");
    String email = rs.getString("email");
    String homepage = rs.getString("homepage");
    String created = rs.getString("created");

//----------------------------------------------
    StringBuffer output = new StringBuffer();
    Reader input = rs.getCharacterStream("contents");
    char[] buffer = new char[1024];
    int byteRead;
    while((byteRead=input.read(buffer,0,1024))!=-1){
  output.append(buffer,0,byteRead);
    }
   
    String contents = output.toString();
          //CLOB µ¥ÀÌÅ͸¦ ºÒ·¯¿À±â À§Çؼ­´Â À§¿¡¼­Ã³·³ 
          //rs.getCharacterStream("content")·Î 
          //ºÒ·¯¼­ StringBuffer¿¡ ´ã¾Æ¾ß ÇÕ´Ï´Ù. 
//----------------------------------------------
    int hit = rs.getInt("hit")+1;
    int ref = rs.getInt("ref"); 
    int position = rs.getInt("position");

    rs.close();

±Û Á¦¸ñ¿¡¼­ ¹«Á¦ÇÑÀ̶ó°í ÇßÁö¸¸, ¼ÖÁ÷È÷ ¹«Á¦ÇÑÀº ¾Æ´Õ´Ï´Ù..^^ ¾Æ½ÃÁÒ 4GB. 
ÅØ½ºÆ®·Î 4GB ³ÖÀ¸½Ã·Á¸é ¸îÀÏ °É¸®Áö ¾ÊÀ»±î¿ä. 
±×·³ Áö±Ý±îÁö ÀÌÁ¾Ã¶´ÔÀÇ Á¦ÀÚ Á¤¹ÎöÀ̾ú½À´Ï´Ù.

* Woong´Ô¿¡ ÀÇÇØ¼­ °Ô½Ã¹° À̵¿µÇ¾ú½À´Ï´Ù (2008-01-15 09:46)


¸ñ·Ï | ÀÔ·Â | ¼öÁ¤ | ´äº¯ | »èÁ¦