﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-付翔的专栏-文章分类-web </title><link>http://www.cppblog.com/397993401/category/13372.html</link><description>在鄙视中成长</description><language>zh-cn</language><lastBuildDate>Thu, 10 Jun 2010 17:55:15 GMT</lastBuildDate><pubDate>Thu, 10 Jun 2010 17:55:15 GMT</pubDate><ttl>60</ttl><item><title>转帖   从sql server数据库导入mysql数据库的体验</title><link>http://www.cppblog.com/397993401/articles/117552.html</link><dc:creator>付翔</dc:creator><author>付翔</author><pubDate>Thu, 10 Jun 2010 05:15:00 GMT</pubDate><guid>http://www.cppblog.com/397993401/articles/117552.html</guid><wfw:comment>http://www.cppblog.com/397993401/comments/117552.html</wfw:comment><comments>http://www.cppblog.com/397993401/articles/117552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/397993401/comments/commentRss/117552.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/397993401/services/trackbacks/117552.html</trackback:ping><description><![CDATA[因工作需要，要将存放在sql server数据库中的数据全部导入到mysql数据库中，在网上搜集相关资料，找到两种方法，现在分别谈谈对他们的看法。
<p>第一种是安装mysql ODBC，利用sql server的导出功能，选择mysql数据源，进行数据的直接导出，这种方法很简便，但是针对实际应用有很多弊端，最主要体现就是数据类型问题，首先，sql server数据库中<br>的
ntext,image等数据类型的数据无法直接写入到mysql数据库中，据说只要稍加改动就可以，可惜偶这只菜鸟还没想到如何改动，其次，因为偶在
mysql中的数据库设计中将时间都设成int型(保存的是时间戳)，所以在数据导过来后，就会出现冲突，再次，这种方法生成的mysql数据表的字段类
型都不很合适，所以此种方法我觉得不能提倡。</p>
<p>第二种是利用php或asp脚本来实现数据的导入功能，这种方法需要编写程序，但灵活性大，操作也不是那么困难，一切都尽在你的掌握之中，现简单介绍一下该方法<br>前提条件是你的mysql环境已经搭建好了，先建好目标数据库，再将所有的表结构用sql语句生成，现在万事具备，只缺数据了。</p>
<p>可以通过下面的php脚本来实现sql server中mydb数据库的user表中数据向mysql中mydb数据库导入<br>&amp;lt;?<br>$cnx = odbc_connect('web', 'admin', '123456');//'web'是sqlserver中mydb的数据源名，'admin'是访问mydb的用户名，'123456'是访问mydb的密码<br>$cur= odbc_exec( $cnx, 'select * from user' );//打开sql server中mydb数据库的user表<br>$num_row=0;<br>$conn=mysql_pconnect("localhost","root","123456");// 连接mysql<br>@mysql_select_db('mydb',$conn) or </p>
<p>die("无法连接到数据库，请与管理员联系！");//打开mysql的mydb数据库<br>while( odbc_fetch_row( $cur )) //从sql server的mydb库中的user表逐条取出数据，如果对数据进行选择，可在前面的select语句中加上条件判断<br>{<br>$num_row++;<br>$field1 = odbc_result( $cur, 1 ); // 这里的参数i(1,2,3..)指的是记录集中的第i个域，你可以有所选择地进行选取，fieldi得到对应域的值，然后你可以对fieldi进行操作<br>$field2 = odbc_result( $cur, 2 ); <br>$field3 = odbc_result( $cur, 3 ); <br>$field4 = odbc_result( $cur, 4 ); <br>$field5 = odbc_result( $cur, 5 ); <br>$field6 = odbc_result( $cur, 6 ); <br>$field5 = timetoint($field5); //这里是对sql server中的datetime类型的字段进行相应转换处理，转换成我所需要的int型 <br>$querystring = "insert into user<br>(id,name,username,password,recdate) <br>values('$field1','$field2','$field3','$field4','$field5')" ;</p>
<p>mysql_query($querystring,$conn);<br>}</p>
<p>function timetoint($str){<br>$arr1=split(" ",$str);<br>$datestr=$arr1[0];<br>$timestr=$arr1[1];<br>$arr_date=split("-",$datestr);<br>$arr_time=split(":",$timestr);<br>$year=$arr_date[0];<br>$month=$arr_date[1];<br>$day=$arr_date[2];<br>$hour=$arr_time[0];<br>$minute=$arr_time[1];<br>$second=$arr_time[2];<br>$time_int=mktime($hour,$minute,$second,$month,$day,$year);<br>return $time_int;<br>}<br>?&amp;gt;</p>
<p>将该段脚本存成sql.php，在服务器上执行，就可以将服务器上sql server中mydb数据库的user表中的数据导入到mysql中mydb数据库的user表中去。其他表的操作与此雷同，就不赘述了。</p>
<p>下面再介绍一下asp脚本实现sql server中mydb数据库的数据向mysql中mydb数据库导入<br>&amp;lt;%<br>set conn=server.createobject("adodb.connection")<br>conn.open 'web', 'admin', '123456' // 'web'是sqlserver中mydb的数据源名，'admin'是访问mydb的用户名，'123456'是访问mydb的密码<br>set rs=server.createobject("adodb.recordset")<br>sql="select
ID,name,username,password,datediff(s,'1970-01-01
00:00:00',recdate)-8*3600,reid,filename,fileContentType,filevalue from
senddate" //这条sql语句实现了将datetime类型的recdate字段转化成unix时间戳的int型</p>
<p>rs.open sql,conn,1,3<br>set conn1=server.createobject("adodb.connection")<br>conn1.open "myoa","root","q1-d6=7?"<br>i=1<br>do while not rs.eof<br>field1 = rs(0) <br>field2 = rs(1) <br>field3 = rs(2) <br>field4 = rs(3) <br>field5 = rs(4) <br>sql1 = "insert into user(ID,name,username,password,recdate) </p>
<p>values("&amp;field1&amp;",'"&amp;field2&amp;"','"&amp;field3&amp;"','"&amp;field4&amp;"',"&amp;field5&amp;")" </p>
<p>conn1.execute sql1<br>rs.movenext<br>i=i+1<br>loop<br>rs.close<br>set rs=nothing<br>conn.close<br>set conn=nothing<br>conn1.close<br>set conn1=nothing</p>
<p>%&amp;gt;</p>
<p>以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用2种回避的方法来避免ntext,image类型</p>
<br><img src ="http://www.cppblog.com/397993401/aggbug/117552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/397993401/" target="_blank">付翔</a> 2010-06-10 13:15 <a href="http://www.cppblog.com/397993401/articles/117552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hauos </title><link>http://www.cppblog.com/397993401/articles/110514.html</link><dc:creator>付翔</dc:creator><author>付翔</author><pubDate>Thu, 25 Mar 2010 08:24:00 GMT</pubDate><guid>http://www.cppblog.com/397993401/articles/110514.html</guid><wfw:comment>http://www.cppblog.com/397993401/comments/110514.html</wfw:comment><comments>http://www.cppblog.com/397993401/articles/110514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/397993401/comments/commentRss/110514.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/397993401/services/trackbacks/110514.html</trackback:ping><description><![CDATA[这是一个为自己协会做的网站，也算是自己的第一个挂在网上的站，贴出以表纪念，同时也因为访问量太少了，呵呵 自己毕竟只是制作网站，里面的内容还是需要别人来充实。<br><br><img  src="http://www.cppblog.com/images/cppblog_com/397993401/hauos.JPG" border="0"><br><br><br><br><img src ="http://www.cppblog.com/397993401/aggbug/110514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/397993401/" target="_blank">付翔</a> 2010-03-25 16:24 <a href="http://www.cppblog.com/397993401/articles/110514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>