database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27677 게시물 읽기
No. 27677
mssql -> mysql 데이터 넘길때 질문입니다.
작성자
고민
작성일
2008-07-15 17:53
조회수
9,016

mssql 에서 백업 받은 파일을 mysql에 넣을려고합니다.


mysqlodbc 깔고 mssql dts를 사용해서 mysql로 데이터를 밀어넣었습니다.


근데 다른 내용들은 다 들어가는데 content 항목이 null값으로 다 들어가네요..


mssql 필드는 text(16)으로 되어있구요 mysql 은 text 줬는데 다 null로 들어가네요.


그래서 mysql 필드를 varchar(255)를 주니 저 크기 만큼은 들어가다가 넘는 데이터가 나오니 에러 뜨네요..


데이터타입 때문에 자료가 안들어가는거 같은데 해결방법있으시면 답변 부탁드립니다...ㅠ

이 글에 대한 댓글이 총 1건 있습니다.

MS-SQL 에서 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이 아니면 에러남)
방화벽은 없는지 접속자 위치는 맞는지 확인하세요.


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" 날짜형식 삽입

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 는 빼도 되는거 같구요. startpage는 제가 안써서 필요하신 분들이 만들어 써보세요.

setsize = 10
pgsize = 10

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 테이블

수고하셔요. ^^

정왕균(하얀바다)님이 2008-07-15 19:01에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27680Temporary DB Connection Error 에러내용좀 보시고 조언부탁합니다.
이병윤
2008-07-17
4199
27679대량 데이타 입력관련 질문드립니다.
쭈녕
2008-07-17
3711
27678엑셀에서 mysql 사용하기
김광하
2008-07-16
3436
27677mssql -> mysql 데이터 넘길때 질문입니다. [1]
고민
2008-07-15
9016
27676쿼리문 질문 입니다. [1]
장정훈
2008-07-15
4078
27675A 테이블에 있지만 B 테이블에없는 데이타 추출... [4]
MY
2008-07-15
3532
27674load data infile로 여러 테이블에 데이터를 넣을 수 있나요? [2]
DB어려워
2008-07-14
3592
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다