ASP 에서 utf-8의 그누보드로의 자료이동.. 정보
ASP 에서 utf-8의 그누보드로의 자료이동..
본문
1. 처음에 db를 euc-kr로 했습니다. 그때는 아무 문제가 없었구요..
mssql에서 원격지의 mysql로의 자료이동은
mysql-ODBC-connector의 사용으로 손쉽게 되었습니다.
방법으로는
localhost에 mssql의 자료를 엑셀로 받은후 asp페이지 코딩으로 엑셀->원격지 mysql서버로의 자료 입력
이렇게 했습니다. 저같은경우 이전 mssql의 DB의 회원 패스워드와 아이디가 그누보드보다 더길더군요
어쩔수 없이 엑셀노가다를 한번 해줘야 되는상황이였습니다. mysql이 있는 서버에 엑셀파일을 올려놓고 php로 작업을 해볼까 생각하여 phpExcelReader같은 프로그램을 구해서 해봤는데 그상황에선 asp가 작업하기가 더 쉬어 로컬에서 asp로 작업을 하였습니다.
asp소스로-------------------------------------------------------------------------------------------------------------------------
<meta http-equiv = "Content-Type" content = "text/html;charset=euc-kr">
<%
'엑셀파일에 연결
Connstring1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(".") & "\10000.xls; Extended Properties=Excel 8.0;"
'10000.xls는 파일명입니다 asp파일과 동일위치에 있어야 합니다
Set exl = server.createobject("ADODB.Connection")
exl.Open Connstring1
Set db=Server.CreateObject("ADODB.Connection")
str = "driver={MySQL ODBC 3.51 Driver};server=000.000.000.000;uid=아이디;pwd=비번;database=디비명;option=3;Port=3306"
db.open str
Set conn=Server.CreateObject("ADODB.RecordSet")
db.Execute("set names euckr")
'엑셀에서 자료를 읽어옴
sql1="Select * from [결과$]" '결과 는 시트의 이름입니다 뒤에 $를 꼭 붙여주세요
Set rs = exl.Execute(sql1)
'반복하면서
i=1
do until rs.eof
'여기부터는 엑셀의 최상위 필드값(mssql의 칼럼명이겠지요.)의 값을 하나씩 가져온다
Idx=rs("Idx")
UserID=rs("UserID")
Password=rs("Password")
Name=rs("Name")
NickName=rs("NickName")
Email=rs("Email")
level=rs("level")
Pernum=rs("Pernum")
Birthday=rs("Birthday")
'여기부터는 그누보드에 들어갈수 있도록 엑셀에서 가져온 값을 다시 만드는곳입니다.
' 설병구분
if mid(Pernum,8,1)=1 then
mb_sex="M"
else
mb_sex="F"
End if
' 생일
birth="19"&mid(Pernum,1,6)
' 우편번호
Zip1=mid(Zipcode,1,3)
Zip2=mid(Zipcode,5,3)
' 주소1
Add1=Sido&" "&Gugun&" "&Dong
sql2="INSERT DELAYED IGNORE INTO `g4_member_test` (`mb_id`,`mb_password`,`mb_name`,`mb_nick`,`mb_nick_date`,`mb_email`,`mb_level`,`mb_jumin`,`mb_sex`,`mb_birth`,`mb_tel`,`mb_hp`,`mb_zip1`,`mb_zip2`,`mb_addr1`,`mb_addr2`,`mb_point`,`mb_today_login`,`mb_datetime`,`mb_mailling`,`mb_sms`,`mb_open`,`mb_1`,`mb_2`,`mb_9`,`mb_10`) VALUES ('"&UserID&"','"&Password&"','"&Name&"','"&NickName&"','"&Regdate&"','"&Email&"',"&level&",'"&new_Pernum&"','"&mb_sex&"','"&birth&"','"&HomePhone&"','"&Celphone&"','"&Zip1&"','"&Zip2&"','"&Add1&"','"&Address&"',1000,'"&Regdate&"','"&Regdate&"','"&Mailling&"',1,1,'"&cpGroup&"','"&logcount&"','"&Idx&"','n')"
conn.open sql2,db,1
rs.movenext
response.write Name & i &"건 옮김 완료..!<br>"
i=i+1
loop
rs.close
exl.close
%>
---------------------------------------------------------------------------------------------------------------------------------------
처음 mssql에서 euc-kr의 mysql에서의 자료이동입니다.
asp가 잘 돌아가는 환경이여야겠지요? ODBC커넥터도 설정해주어야 되구요
제어판-관리도구-ODBC-시스템DNS 에서 추가하여 설정해주시면 됩니다.
원격지 mysql의 접속설정이겠지요?
(꼭 설정해야 되는지 않해도 되는지 모르겠지만.. 커넥터가 없이 접속할수 있을지는)
위 파일과 excel파일을 동일 디렉토리에 넣으신후 웹에서 실행한번 해주면 됩니다.
2.mssql 에서 utf-8의 그누보드로 자료이동(file이 아닙니다..^^;;)
1번과 동일한 방식으로 해보려고 했는데 않되더군요..
php에서는 mb_convert_encoding($info[mb_name], 'EUC-KR', 'UTF-8'); 함수가 있어서
euc-kr,utf-8로의 변환이 되곤 합니다.
(inipay와 같은 결제 시스템에서 꼭 필요 했지요..정상적인 결제가 되었는데 뚥쀍빪쀪 이런식의 결과가 보여지니 난감.. ㅎㅎ)
asp에서는 위와같은 함수가 없는듯 합니다. asp에서는 utf-8을 지원않한다고도 하더군요.
(물론 정확한정보는 아닙니다. asp.net에서는 encodeUTF8인가 뭔가하는게 있고 자료를 버퍼로 읽어 이걸 다시 인코딩 하고 어쩌고 그러더군요.. 근데 전 asp.net을 한번도 못해봐서요..)
<meta http-equiv = "Content-Type" content = "text/html;charset=euc-kr">
'Response.Charset = "UTF-8"
뭐 이런거 써줘도 글씨는 깨지더군요..
어찌되뜬.. 검색시 fulltext때문에 utf-8이 꼭 필요 했습니다.(저희 회원이 70만이 넘어가는상황이라)
utf-8로 꼭 변환을 해야되서.. 이리저리 생각하다..
이렇게 했습니다.
localhost에 mysql5.0을 깔아 줍니다 euc-kr로 말이죠.. ODBC설정 한다음에 1번과 같이 로컬의 mysql에 자료를 넣습니다. 그런다음 해당 table를 sql파일로 덤프 받으신후..
덤프받은 sql파일의 제일 하단에 euckr을 utf8로 고쳐주시고..
원격지의 서버에 올린후 덤프 받으신걸 넣으시면 되요..
이렇게 않하면 한글이 깨지더군요.. 다른건 아무이상이 없는데 말이죠..
다른방법도 많이 있겠지만 저처럼 초짜이면서 어떻게 해야 될지 분들을 위해.
저처럼 방대한 자료를 일괄적 자료이동이 절실히 필요하신분들을 위해.
허접한 팁을 올립니다..
ps : mssql에서 자료를 엑셀로 받을시 3만 몇천건밖에 않받아 집니다..용량도 엄청 크구요
(오래되서.. 몇건인지 모름..)
그래서 전 1만건식 엑셀로 만들어서 작업했습니다..
작업소요시간은 만 하루가 걸렸구요.. 자료이동은 대략 100만건 정도 였습니다.
mssql에서 원격지의 mysql로의 자료이동은
mysql-ODBC-connector의 사용으로 손쉽게 되었습니다.
방법으로는
localhost에 mssql의 자료를 엑셀로 받은후 asp페이지 코딩으로 엑셀->원격지 mysql서버로의 자료 입력
이렇게 했습니다. 저같은경우 이전 mssql의 DB의 회원 패스워드와 아이디가 그누보드보다 더길더군요
어쩔수 없이 엑셀노가다를 한번 해줘야 되는상황이였습니다. mysql이 있는 서버에 엑셀파일을 올려놓고 php로 작업을 해볼까 생각하여 phpExcelReader같은 프로그램을 구해서 해봤는데 그상황에선 asp가 작업하기가 더 쉬어 로컬에서 asp로 작업을 하였습니다.
asp소스로-------------------------------------------------------------------------------------------------------------------------
<meta http-equiv = "Content-Type" content = "text/html;charset=euc-kr">
<%
'엑셀파일에 연결
Connstring1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(".") & "\10000.xls; Extended Properties=Excel 8.0;"
'10000.xls는 파일명입니다 asp파일과 동일위치에 있어야 합니다
Set exl = server.createobject("ADODB.Connection")
exl.Open Connstring1
Set db=Server.CreateObject("ADODB.Connection")
str = "driver={MySQL ODBC 3.51 Driver};server=000.000.000.000;uid=아이디;pwd=비번;database=디비명;option=3;Port=3306"
db.open str
Set conn=Server.CreateObject("ADODB.RecordSet")
db.Execute("set names euckr")
'엑셀에서 자료를 읽어옴
sql1="Select * from [결과$]" '결과 는 시트의 이름입니다 뒤에 $를 꼭 붙여주세요
Set rs = exl.Execute(sql1)
'반복하면서
i=1
do until rs.eof
'여기부터는 엑셀의 최상위 필드값(mssql의 칼럼명이겠지요.)의 값을 하나씩 가져온다
Idx=rs("Idx")
UserID=rs("UserID")
Password=rs("Password")
Name=rs("Name")
NickName=rs("NickName")
Email=rs("Email")
level=rs("level")
Pernum=rs("Pernum")
Birthday=rs("Birthday")
'여기부터는 그누보드에 들어갈수 있도록 엑셀에서 가져온 값을 다시 만드는곳입니다.
' 설병구분
if mid(Pernum,8,1)=1 then
mb_sex="M"
else
mb_sex="F"
End if
' 생일
birth="19"&mid(Pernum,1,6)
' 우편번호
Zip1=mid(Zipcode,1,3)
Zip2=mid(Zipcode,5,3)
' 주소1
Add1=Sido&" "&Gugun&" "&Dong
sql2="INSERT DELAYED IGNORE INTO `g4_member_test` (`mb_id`,`mb_password`,`mb_name`,`mb_nick`,`mb_nick_date`,`mb_email`,`mb_level`,`mb_jumin`,`mb_sex`,`mb_birth`,`mb_tel`,`mb_hp`,`mb_zip1`,`mb_zip2`,`mb_addr1`,`mb_addr2`,`mb_point`,`mb_today_login`,`mb_datetime`,`mb_mailling`,`mb_sms`,`mb_open`,`mb_1`,`mb_2`,`mb_9`,`mb_10`) VALUES ('"&UserID&"','"&Password&"','"&Name&"','"&NickName&"','"&Regdate&"','"&Email&"',"&level&",'"&new_Pernum&"','"&mb_sex&"','"&birth&"','"&HomePhone&"','"&Celphone&"','"&Zip1&"','"&Zip2&"','"&Add1&"','"&Address&"',1000,'"&Regdate&"','"&Regdate&"','"&Mailling&"',1,1,'"&cpGroup&"','"&logcount&"','"&Idx&"','n')"
conn.open sql2,db,1
rs.movenext
response.write Name & i &"건 옮김 완료..!<br>"
i=i+1
loop
rs.close
exl.close
%>
---------------------------------------------------------------------------------------------------------------------------------------
처음 mssql에서 euc-kr의 mysql에서의 자료이동입니다.
asp가 잘 돌아가는 환경이여야겠지요? ODBC커넥터도 설정해주어야 되구요
제어판-관리도구-ODBC-시스템DNS 에서 추가하여 설정해주시면 됩니다.
원격지 mysql의 접속설정이겠지요?
(꼭 설정해야 되는지 않해도 되는지 모르겠지만.. 커넥터가 없이 접속할수 있을지는)
위 파일과 excel파일을 동일 디렉토리에 넣으신후 웹에서 실행한번 해주면 됩니다.
2.mssql 에서 utf-8의 그누보드로 자료이동(file이 아닙니다..^^;;)
1번과 동일한 방식으로 해보려고 했는데 않되더군요..
php에서는 mb_convert_encoding($info[mb_name], 'EUC-KR', 'UTF-8'); 함수가 있어서
euc-kr,utf-8로의 변환이 되곤 합니다.
(inipay와 같은 결제 시스템에서 꼭 필요 했지요..정상적인 결제가 되었는데 뚥쀍빪쀪 이런식의 결과가 보여지니 난감.. ㅎㅎ)
asp에서는 위와같은 함수가 없는듯 합니다. asp에서는 utf-8을 지원않한다고도 하더군요.
(물론 정확한정보는 아닙니다. asp.net에서는 encodeUTF8인가 뭔가하는게 있고 자료를 버퍼로 읽어 이걸 다시 인코딩 하고 어쩌고 그러더군요.. 근데 전 asp.net을 한번도 못해봐서요..)
<meta http-equiv = "Content-Type" content = "text/html;charset=euc-kr">
'Response.Charset = "UTF-8"
뭐 이런거 써줘도 글씨는 깨지더군요..
어찌되뜬.. 검색시 fulltext때문에 utf-8이 꼭 필요 했습니다.(저희 회원이 70만이 넘어가는상황이라)
utf-8로 꼭 변환을 해야되서.. 이리저리 생각하다..
이렇게 했습니다.
localhost에 mysql5.0을 깔아 줍니다 euc-kr로 말이죠.. ODBC설정 한다음에 1번과 같이 로컬의 mysql에 자료를 넣습니다. 그런다음 해당 table를 sql파일로 덤프 받으신후..
덤프받은 sql파일의 제일 하단에 euckr을 utf8로 고쳐주시고..
원격지의 서버에 올린후 덤프 받으신걸 넣으시면 되요..
이렇게 않하면 한글이 깨지더군요.. 다른건 아무이상이 없는데 말이죠..
다른방법도 많이 있겠지만 저처럼 초짜이면서 어떻게 해야 될지 분들을 위해.
저처럼 방대한 자료를 일괄적 자료이동이 절실히 필요하신분들을 위해.
허접한 팁을 올립니다..
ps : mssql에서 자료를 엑셀로 받을시 3만 몇천건밖에 않받아 집니다..용량도 엄청 크구요
(오래되서.. 몇건인지 모름..)
그래서 전 1만건식 엑셀로 만들어서 작업했습니다..
작업소요시간은 만 하루가 걸렸구요.. 자료이동은 대략 100만건 정도 였습니다.
추천
0
0
댓글 1개

웨디님 좋은 팁 감사합니다.....^^