[my-sql] MSSQL 2 MySQL 변환, asp 게시판 소스 수정
페이지 정보
작성자 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 56,091회 작성일 09-02-22 17:16본문
Database Converter from Microsoft SQL Server to MySQL
1. 준비사항
MySQL5 설치, 포트는 우선 3306으로 하고 나중에 변경요.
MyODBC3.5 설치
MYOLEDB3 설치 후 한글 패치
MsSQL2MySQL 다운 설치 ( http://www.kofler.cc/mysql/mssql2mysql.html )
2. 데이타 전송하기 전에
=> my.ini 파일을 아래와 같이 설정하고 서버 재시작
아래 mysqld 옵션을 설정하지 않으면 데이타 전송시 한글과 특수문자를 쓸때 에러 발생
[client]
port=3306
[mysql]
default-character-set=euckr
[mysqldump]
default-character-set=euckr
[mysqld]
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci
=> Ms-SQL에서 자동증가 상수를 사용하였다면 해당 컬럼에 인덱스 추가해야 My-SQL에서 인식함.
3. 데이타 전송
MsSQL2MySQL 실행하고 연결 설정한 후 데이타 전송(포트가 3306이 아니면 에러남)
root 계정이 아닌 일반 계정으로 설정하여야 전송이 잘 되는 것 같습니다. (root 계정은 utf8 을 사용 추정)
방화벽은 없는지 접속자 위치는 맞는지 확인하세요. 안되면 오디비시도 설정하시구요.
4. MySQL에 사용자 추가하고 권한주고 웹에서 접속
Set DbCon=server.createobject("adodb.connection")
dbcon.open "provider=mysqlprov;location=localhost;data source=디비이름;intergrated security='';user id=아이
디;password=비번;port=포트;"
위에 설정이 안되는 경우가 있음(나도 지금 안됨 ㅡ.ㅜ) 아래 소스를 사용함.
Set dbcon=server.createobject("adodb.connection")
dbcon.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=디비이름; user id=아이디;
password=비번; OPTION=35;port=포트;"
5. ASP 파일에서 변경해 줘야할 DB 관련 함수와 파라미터
1) TOP는 LIMIT으로 교체.
예) SELECT TOP 1 FROM board WHERE uid = 1
-> SELECT * FROM board WHERE uid = 1 LIMIT 1
2) @@IDENTITY는 작동하지 않음. LAST_INSERT_ID()로 수정.
예) SELECT @@IDENTITY
-> SELECT LAST_INSERT_ID()
3) MSSQL에서는 GROUP BY에 SELECT 뒤에 나오는 컬럼을 다 적어주어야 함.
4) GETDATE()는 NOW()(날짜와 시간)나 curdate()(날짜만)로 바꾼다.
Ms-SQL에서 날짜 형식에 빈칸을 넣으면 1900-01-01이 들어가는데 MySQL에서는 에러난다.
"1900-01-01 00:00:00" 이나 "1900-01-01" 날짜형식 삽입
5) DATEDIFF()
mysql - DateDiff( date(컬럼명이나 날짜) ,'"& date &"') = 0
mssql - DATEDIFF(day, date, GETDATE()) = 0
6) string + string 은 CONCAT 을 하면 된다.
예) SELECT str('가'+'나') as title FROM board
-> SELECT CONCAT('가'.'나') AS title FROM board
7) ROUND([숫자], [자릿수]).
8) LIKE 문에서는 '['가 있는지 확인하여야 함.
9) UNION 을 쓸 때 MYSQL에서는 SELECT를 ()로 꼭 감싸주어야 한다.
10) 게시판 수정 작업
Result.PageCount 와 Result.RecordCount 가 제일 문제인데 이것을 계산하여 해당 변수에 넣어주면 됩니다.
AbsolutePage 는 빼도 되는거 같구요.
if Request("page")="" then '넘겨받는 변수는 페이지 값만
page=1
startpage=1
else
page=cint(Request("page"))
startpage=int(page/setsize)
if startpage=(page/setsize) then
startpage=page-setsize + 1
else
startpage=int(page/setsize)*setsize + 1
end if
end if
stpage = int((page - 1) * pgsize) '각 페이지에 맞게 잘라올 시작값
sql = "Select count(*) From tbname '
Set RsCount = Dbcon.Execute (sql)
trcount = cint(RsCount(0)) 'Result.RecordCount
IF trcount mod pgsize = 0 THEN
pgcount = trcount / pgsize 'Result.PageCount
ELSE
pgcount = (trcount / 10) + 1
END IF
sql="SELECT * FROM tbname ORDER BY ref DESC limit " & stpage & "," & pgsize
Set result = Dbcon.Execute (sql)
select mref = Max(ref) from 테이블 => select Max(ref) as mref from 테이블
select count(*) from 테이블
여기서 반환값이 상수형이 아닌 문자형으로 나와서 Rs(0) > 0 이렇게 비교하면 에러나는 것 같음.
IF cint(Rs(0)) > 0 THEN 이렇게 쓰세요.
Ms-SQL을 5년가까이 써왔는데 지금 집에 허접한 작업 피시에서 검색하는데도 처리 속도가 서버보다 더 빠른 것 같네요. MySQL이 불안하고 기능이 제한되어 있었는데 5버젼에서 많은 기능이 추가되니 이제 궂이 M$-SQL 쓰지 마시고 MySQL 쓰시기 바랍니다.
자료출처 : http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Asp&seqs=123713
1. 준비사항
MySQL5 설치, 포트는 우선 3306으로 하고 나중에 변경요.
MyODBC3.5 설치
MYOLEDB3 설치 후 한글 패치
MsSQL2MySQL 다운 설치 ( http://www.kofler.cc/mysql/mssql2mysql.html )
2. 데이타 전송하기 전에
=> my.ini 파일을 아래와 같이 설정하고 서버 재시작
아래 mysqld 옵션을 설정하지 않으면 데이타 전송시 한글과 특수문자를 쓸때 에러 발생
[client]
port=3306
[mysql]
default-character-set=euckr
[mysqldump]
default-character-set=euckr
[mysqld]
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci
=> Ms-SQL에서 자동증가 상수를 사용하였다면 해당 컬럼에 인덱스 추가해야 My-SQL에서 인식함.
3. 데이타 전송
MsSQL2MySQL 실행하고 연결 설정한 후 데이타 전송(포트가 3306이 아니면 에러남)
root 계정이 아닌 일반 계정으로 설정하여야 전송이 잘 되는 것 같습니다. (root 계정은 utf8 을 사용 추정)
방화벽은 없는지 접속자 위치는 맞는지 확인하세요. 안되면 오디비시도 설정하시구요.
4. MySQL에 사용자 추가하고 권한주고 웹에서 접속
Set DbCon=server.createobject("adodb.connection")
dbcon.open "provider=mysqlprov;location=localhost;data source=디비이름;intergrated security='';user id=아이
디;password=비번;port=포트;"
위에 설정이 안되는 경우가 있음(나도 지금 안됨 ㅡ.ㅜ) 아래 소스를 사용함.
Set dbcon=server.createobject("adodb.connection")
dbcon.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=디비이름; user id=아이디;
password=비번; OPTION=35;port=포트;"
5. ASP 파일에서 변경해 줘야할 DB 관련 함수와 파라미터
1) TOP는 LIMIT으로 교체.
예) SELECT TOP 1 FROM board WHERE uid = 1
-> SELECT * FROM board WHERE uid = 1 LIMIT 1
2) @@IDENTITY는 작동하지 않음. LAST_INSERT_ID()로 수정.
예) SELECT @@IDENTITY
-> SELECT LAST_INSERT_ID()
3) MSSQL에서는 GROUP BY에 SELECT 뒤에 나오는 컬럼을 다 적어주어야 함.
4) GETDATE()는 NOW()(날짜와 시간)나 curdate()(날짜만)로 바꾼다.
Ms-SQL에서 날짜 형식에 빈칸을 넣으면 1900-01-01이 들어가는데 MySQL에서는 에러난다.
"1900-01-01 00:00:00" 이나 "1900-01-01" 날짜형식 삽입
5) DATEDIFF()
mysql - DateDiff( date(컬럼명이나 날짜) ,'"& date &"') = 0
mssql - DATEDIFF(day, date, GETDATE()) = 0
6) string + string 은 CONCAT 을 하면 된다.
예) SELECT str('가'+'나') as title FROM board
-> SELECT CONCAT('가'.'나') AS title FROM board
7) ROUND([숫자], [자릿수]).
8) LIKE 문에서는 '['가 있는지 확인하여야 함.
9) UNION 을 쓸 때 MYSQL에서는 SELECT를 ()로 꼭 감싸주어야 한다.
10) 게시판 수정 작업
Result.PageCount 와 Result.RecordCount 가 제일 문제인데 이것을 계산하여 해당 변수에 넣어주면 됩니다.
AbsolutePage 는 빼도 되는거 같구요.
if Request("page")="" then '넘겨받는 변수는 페이지 값만
page=1
startpage=1
else
page=cint(Request("page"))
startpage=int(page/setsize)
if startpage=(page/setsize) then
startpage=page-setsize + 1
else
startpage=int(page/setsize)*setsize + 1
end if
end if
stpage = int((page - 1) * pgsize) '각 페이지에 맞게 잘라올 시작값
sql = "Select count(*) From tbname '
Set RsCount = Dbcon.Execute (sql)
trcount = cint(RsCount(0)) 'Result.RecordCount
IF trcount mod pgsize = 0 THEN
pgcount = trcount / pgsize 'Result.PageCount
ELSE
pgcount = (trcount / 10) + 1
END IF
sql="SELECT * FROM tbname ORDER BY ref DESC limit " & stpage & "," & pgsize
Set result = Dbcon.Execute (sql)
select mref = Max(ref) from 테이블 => select Max(ref) as mref from 테이블
select count(*) from 테이블
여기서 반환값이 상수형이 아닌 문자형으로 나와서 Rs(0) > 0 이렇게 비교하면 에러나는 것 같음.
IF cint(Rs(0)) > 0 THEN 이렇게 쓰세요.
Ms-SQL을 5년가까이 써왔는데 지금 집에 허접한 작업 피시에서 검색하는데도 처리 속도가 서버보다 더 빠른 것 같네요. MySQL이 불안하고 기능이 제한되어 있었는데 5버젼에서 많은 기능이 추가되니 이제 궂이 M$-SQL 쓰지 마시고 MySQL 쓰시기 바랍니다.
자료출처 : http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Asp&seqs=123713
관련링크
댓글목록
등록된 댓글이 없습니다.