|
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)
|