知识大全 数据从sqlserver导入mysql数据库的体验

Posted 数据库

篇首语:丈夫志四海,万里犹比邻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据从sqlserver导入mysql数据库的体验相关的知识,希望对你有一定的参考价值。

  第一种是安装mysql ODBC 利用sql server的导出功能 选择mysql数据源 进行数据的直接导出 这种方法很简便 但是针对实际应用有很多弊端 最主要体现就是数据类型问题 首先 sql server数据库中的ntext image等数据类型的数据无法直接写入到mysql数据库中 据说只要稍加改动就可以 可惜偶这只菜鸟还没想到如何改动 其次 因为偶在mysql中的数据库设计中将时间都设成int型(保存的是时间戳) 所以在数据导过来后 就会出现冲突 再次 这种方法生成的mysql数据表的字段类型都不很合适 所以此种方法我觉得不能提倡     第二种是利用php或asp脚本来实现数据的导入功能 这种方法需要编写程序 但灵活性大 操作也不是那么困难 一切都尽在你的掌握之中 现简单介绍一下该方法前提条件是你的mysql环境已经搭建好了 先建好目标数据库 再将所有的表结构用sql语句生成 现在万事具备 只缺数据了     可以通过下面的php脚本来实现sql server中mydb数据库的user表中数据向mysql中mydb数据库导入  <?  $cnx = odbc_connect( web admin );// web 是sqlserver中mydb的数据源名 admin 是访问mydb的用户名 是访问mydb的密码  $cur= odbc_exec( $cnx select * from user );//打开sql server中mydb数据库的user表  $num_row= ;  $conn=mysql_pconnect( localhost root );// 连接mysql  @mysql_select_db( mydb $conn) or     die( 无法连接到数据库 请与管理员联系! );//打开mysql的mydb数据库  while( odbc_fetch_row( $cur ))      //从sql server的mydb库中的user表逐条取出数据 如果对数据进行选择 可在前面的select语句中加上条件判断     $num_row++;   $field = odbc_result( $cur );  // 这里的参数i( )指的是记录集中的第i个域 你可以有所选择地进行选取 fieldi得到对应域的值 然后你可以对fieldi进行操作   $field = odbc_result( $cur );     $field = odbc_result( $cur );     $field = odbc_result( $cur );     $field = odbc_result( $cur );     $field = odbc_result( $cur );     $field = timetoint($field );  //这里是对sql server中的datetime类型的字段进行相应转换处理 转换成我所需要的int型     $querystring = insert into user           (id name username password recdate)           values( $field $field $field $field $field ) ;     mysql_query($querystring $conn);      function timetoint($str)   $arr =split( $str);   $datestr=$arr [ ];   $timestr=$arr [ ];   $arr_date=split( $datestr);   $arr_time=split( : $timestr);   $year=$arr_date[ ];   $month=$arr_date[ ];   $day=$arr_date[ ];   $hour=$arr_time[ ];   $minute=$arr_time[ ];   $second=$arr_time[ ];   $time_int=mktime($hour $minute $second $month $day $year);   return $time_int;    ?>    将该段脚本存成sql php 在服务器上执行 就可以将服务器上sql server中mydb数据库的user表中的数据导入到mysql中mydb数据库的user表中去 其他表的操作与此雷同 就不赘述了     下面再介绍一下asp脚本实现sql server中mydb数据库的数据向mysql中mydb数据库导入  <%  set conn=server createobject( nnection )  conn open web admin // web 是sqlserver中mydb的数据源名 admin 是访问mydb的用户名 是访问mydb的密码  set rs=server createobject( adodb recordset )  sql= select ID name username password datediff(s : : recdate) * reid filename fileContentType filevalue from senddate //这条sql语句实现了将datetime类型的recdate字段转化成unix时间戳的int型    rs open sql conn   set conn =server createobject( nnection )  conn open myoa root q d = ?   i=   do while not rs eof   field = rs( )     field = rs( )     field = rs( )     field = rs( )     field = rs( )     sql = insert into user(ID name username password recdate)        values( &field & &field & &field & &field & &field & )     conn execute sql   rs movenext  i=i+   loop  rs close  set rs=nothing  conn close  set conn=nothing  conn close  set conn =nothing    %>    以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用 种回避的方法来避免ntext image类型数据的传递 一种是将ntext字段改为nvarchar( ) 因为实际情况 原始数据中该字段的数据长度都未超过 个字 所以并没有出现数据截断 另一个手段是将image类型数据取出来写到文件中 以文件形式保存 将文件路径存到数据库中 方法见下     function makeattach(fileContentType filevalue i)    select case fileContentType      case application/msword         ext= doc         case application/vnd ms excel         ext= exl               case application/vnd ms powerpoint         ext= pps               case application/x rar pressed         ext= rar               case application/x zip pressed         ext= zip               case image/gif         ext= gif               case image/pjpeg         ext= jpg               case text/plain         ext= txt               case else        ext= x             end select    if ext<> x then      set fso=server createobject( FileSystemObject )      fName= attech &i& &ext      Dir= d:\\attach\\       If fso FileExists(Dir & fName) Then fso deletefile Dir & fName      If fName<> AND NOT fso FileExists(Dir & fName) Then        Set strm =Server CreateObject( ADODB Stream )        strm Open        strm Type= Binary        strm Write filevalue        strm SaveToFile Dir & fName         Set strm =Nothing      end if      makeattach=fName    end if  end function    这个函数有 个输入参数 第一个是文件的contentType 第二个是文件的二进制数值 第三个是个可以区别文件名的变量 先根据contentType确定所存文件的后缀名 然后就是将二进制数值保存成指定文件名的文件 并将文件名作为输出参数返回 将返回的参数作为数据写到mysql的数据库中保存 cha138/Article/program/MySQL/201311/11203

相关参考

知识大全 MySQL数据导入导出工具mysqlimport简介

MySQL数据导入导出工具mysqlimport简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 MySQL数据的导出和导入工具mysqldump

MySQL数据的导出和导入工具mysqldump  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 MySQL数据导入导出方法与工具介绍一

MySQL数据导入导出方法与工具介绍一  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )mysq

知识大全 将MySQL 5.0下的数据导入到MySQL 3.23中

将MySQL5.0下的数据导入到MySQL3.23中  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 MySQL数据导入导出方法与工具介绍二

MySQL数据导入导出方法与工具介绍二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  批处理是一

知识大全 用POI将Mysql数据导入到Excel中去

用POI将Mysql数据导入到Excel中去  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我

知识大全 oracle,sqlserver,MySQL数据库语句对照表

oracle,sqlserver,MySQL数据库语句对照表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 SQL Server 2005和SQL Server 2000数据的相互导入

SQLServer2005和SQLServer2000数据的相互导入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 SQL Server导出导入数据方法

SQLServer导出导入数据方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一导出导入SQ

知识大全 导入SQL Server备份的数据库方法

导入SQLServer备份的数据库方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在树形菜单