BLOG main image
정민군's Blog
miniya devlog

Oracle의 테이블에 해당 컬럼의 사이즈가 충분함에도 불구하고
PreparedStatement를 통해 한글로 된 String을 세팅하고 실행하는 경우 발생하는 에러

데이터 크기가 해당 유형의 최대 크기보다 큽니다: 3000

- 해결방법
1. SQL에 직접 작성한다.
2. classes12.zip의 버전을 다운하여 해결한다. (JDBC1.4->1.2)
3. setString()대신에 setCharacterStream()을 사용한다.

java.sql
Interface PreparedStatement
.
.
.
public void setString(int parameterIndex, String x)
      throws SQLExceptionSets the designated parameter to the given Java String value.
      The driver converts this to an SQL VARCHAR or LONGVARCHAR value
      (depending on the argument's size relative to the driver's limits on VARCHAR values)
      when it sends it to the database.

API를 보면 드라이버마다 차이가 있는 것 같습니다.

WML Script Reference

Language/WAP 2006. 10. 17. 21:31 by 정민군

DB, Table 별 Backup

Language/ShellScript 2006. 10. 17. 21:27 by 정민군
각 디비별 테이블별 시간별로 백업 받는 쉘 스크립트입니다.
샐행파일을 ~/bin 디렉토리에 넣어서 실행하면
../디비명/테이블명/03h.db 파일로 백업을 받습니다.
테이블별로 백업 받기 때문에 복구 하기도 간편하죠 ^^

물론 해당 디렉토리에 쓰기 가능한 퍼미션을 주어야 겠죠.

실행 화일을 크론을 걸어 두면 좋겠죠^^
크론에 대한 설명은 이곳에 아주 잘 나온것 같아서 생략합니다.

backup.sh 파일명.

#!/bin/ksh

HOST="localhost"
ID="id"                                             # 마스터 아이디
PWD="passwd"                                # 마스터 비밀번호
DBS="db1 db2 db3 db4 ....."               # 백업 받고자 하는 디비명

PATH=`dirname $0`                           # 현재의 디렉토리 PATH를 설정해줌.
MYDIR="/usr/local/mysql/bin/"         # MySql 실행화일 디렉토리

MYSQL="${MYDIR}/mysql -h ${HOST} -u ${ID} -p${PWD} "
DUMP="${MYDIR}/mysqldump -h ${HOST} -u ${ID} -p${PWD} "
SHOW="${MYDIR}/mysqlshow -h ${HOST} -u ${ID} -p${PWD} "
HOUR=`/bin/date +"%H"`                    # 백업받고 있는 현재 시간 => 나중에 파일 명이 됨.
                                                     # 날짜로 설정하고 싶으면 HOUR=`/bin/date +"%d"` 로 해주면 됩니다.  
function show
{

       DIR="${PATH}/../${DB}"                    
       [ -d  ${DIR} ] || /bin/mkdir $DIR                # 디비별 디렉토릭 생성

       if [ -f ${MYDIR}/mysqlshow ]                    # 특정 디비내의 테이블 불러오기
       then
               TB=`$MYSQL $DB -e "show tables" | /bin/grep -v Tables_in_${DB} `
       fi

       for TMPTB in $TB
       do
                       
              TBDIR="${DIR}/${TMPTB}"
              [ -d $TBDIR ] || /bin/mkdir $TBDIR             # 테이블별 디렉토리 생성

              $DUMP $DB $TMPTB > $TBDIR/${HOUR}h.db   # 시간설정 테이블 백업 받기
               
       done

}

for DB in $DBS
do
       show
done


#$DUMP $DB $TABLE > ${PATH}/../${DB}/${TABLE}${HOUR}h.db
1 2 3 4 5 6 

카테고리

분류 전체보기 (46)
Technic (5)
Language (16)
Database (8)
System (5)
Algorithm (1)
Design (1)
Tool (3)
Framework (2)
Network (1)
Utility (1)
SmartPhone (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함