Maison base de données tutoriel mysql 数据从sqlserver导入mysql数据库的体验_MySQL

数据从sqlserver导入mysql数据库的体验_MySQL

Jun 01, 2016 pm 02:12 PM
mysql 体验 导入 数据 数据库

SQL Server


  第一种是安装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', '123456');//'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
  $cur= odbc_exec( $cnx, 'select * from user' );//打开sql server中mydb数据库的user表
  $num_row=0;
  $conn=mysql_pconnect("localhost","root","123456");// 连接mysql
  @mysql_select_db('mydb',$conn) or
  
  die("无法连接到数据库,请与管理员联系!");//打开mysql的mydb数据库
  while( odbc_fetch_row( $cur ))      //从sql server的mydb库中的user表逐条取出数据,如果对数据进行选择,可在前面的select语句中加上条件判断
  {
   $num_row++;
   $field1 = odbc_result( $cur, 1 );  // 这里的参数i(1,2,3..)指的是记录集中的第i个域,你可以有所选择地进行选取,fieldi得到对应域的值,然后你可以对fieldi进行操作
   $field2 = odbc_result( $cur, 2 ); 
   $field3 = odbc_result( $cur, 3 ); 
   $field4 = odbc_result( $cur, 4 ); 
   $field5 = odbc_result( $cur, 5 ); 
   $field6 = odbc_result( $cur, 6 ); 
   $field5 = timetoint($field5);  //这里是对sql server中的datetime类型的字段进行相应转换处理,转换成我所需要的int型 
   $querystring = "insert into user
           (id,name,username,password,recdate)
          values('$field1','$field2','$field3','$field4','$field5')" ;
  
   mysql_query($querystring,$conn);
  }
  
  function timetoint($str){
   $arr1=split(" ",$str);
   $datestr=$arr1[0];
   $timestr=$arr1[1];
   $arr_date=split("-",$datestr);
   $arr_time=split(":",$timestr);
   $year=$arr_date[0];
   $month=$arr_date[1];
   $day=$arr_date[2];
   $hour=$arr_time[0];
   $minute=$arr_time[1];
   $second=$arr_time[2];
   $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("adodb.connection")
  conn.open 'web', 'admin', '123456' // 'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
  set rs=server.createobject("adodb.recordset")
  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型
  
  rs.open sql,conn,1,3
  set conn1=server.createobject("adodb.connection")
  conn1.open "myoa","root","q1-d6=7?"
  i=1
  do while not rs.eof
   field1 = rs(0) 
   field2 = rs(1) 
   field3 = rs(2) 
   field4 = rs(3) 
   field5 = rs(4) 
   sql1 = "insert into user(ID,name,username,password,recdate)    
  
  values("&field1&",'"&field2&"','"&field3&"','"&field4&"',"&field5&")"
  
  conn1.execute sql1
  rs.movenext
  i=i+1
  loop
  rs.close
  set rs=nothing
  conn.close
  set conn=nothing
  conn1.close
  set conn1=nothing
  
  %>
  
  以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用2种回避的方法来避免ntext,image类型数据的传递,一种是将ntext字段改为nvarchar(4000),因为实际情况,原始数据中该字段的数据长度都未超过4000个字,所以并没有出现数据截断,另一个手段是将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-compressed"
        ext="rar"
        
      case "application/x-zip-compressed"
        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 strm1=Server.CreateObject("ADODB.Stream")
        strm1.Open
        strm1.Type=1 'Binary
        strm1.Write filevalue
        strm1.SaveToFile Dir & fName,2
        Set strm1=Nothing
      end if
      makeattach=fName
    end if
  end function
  
  这个函数有3个输入参数,第一个是文件的contentType,第二个是文件的二进制数值,第三个是个可以区别文件名的变量,先根据contentType确定所存文件的后缀名,然后就是将二进制数值保存成指定文件名的文件,并将文件名作为输出参数返回,将返回的参数作为数据写到mysql的数据库中保存。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer une table MySQL en utilisant PHP ? Comment créer une table MySQL en utilisant PHP ? Jun 04, 2024 pm 01:57 PM

La création d'une table MySQL à l'aide de PHP nécessite les étapes suivantes : Connectez-vous à la base de données. Créez la base de données si elle n'existe pas. Sélectionnez une base de données. Créer un tableau. Exécutez la requête. Fermez la connexion.

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Les startups d'IA ont collectivement transféré leurs emplois vers OpenAI, et l'équipe de sécurité s'est regroupée après le départ d'Ilya ! Les startups d'IA ont collectivement transféré leurs emplois vers OpenAI, et l'équipe de sécurité s'est regroupée après le départ d'Ilya ! Jun 08, 2024 pm 01:00 PM

" sept péchés capitaux" » Dissiper les rumeurs : selon des informations divulguées et des documents obtenus par Vox, la haute direction d'OpenAI, y compris Altman, était bien au courant de ces dispositions de récupération de capitaux propres et les a approuvées. De plus, OpenAI est confronté à un problème grave et urgent : la sécurité de l’IA. Les récents départs de cinq employés liés à la sécurité, dont deux de ses employés les plus en vue, et la dissolution de l'équipe « Super Alignment » ont une nouvelle fois mis les enjeux de sécurité d'OpenAI sur le devant de la scène. Le magazine Fortune a rapporté qu'OpenA

Le modèle 70B génère 1 000 jetons en quelques secondes, la réécriture du code dépasse GPT-4o, de l'équipe Cursor, un artefact de code investi par OpenAI Le modèle 70B génère 1 000 jetons en quelques secondes, la réécriture du code dépasse GPT-4o, de l'équipe Cursor, un artefact de code investi par OpenAI Jun 13, 2024 pm 03:47 PM

Modèle 70B, 1000 tokens peuvent être générés en quelques secondes, ce qui se traduit par près de 4000 caractères ! Les chercheurs ont affiné Llama3 et introduit un algorithme d'accélération. Par rapport à la version native, la vitesse est 13 fois plus rapide ! Non seulement il est rapide, mais ses performances sur les tâches de réécriture de code dépassent même GPT-4o. Cette réalisation vient d'anysphere, l'équipe derrière le populaire artefact de programmation d'IA Cursor, et OpenAI a également participé à l'investissement. Il faut savoir que sur Groq, un framework d'accélération d'inférence rapide bien connu, la vitesse d'inférence de 70BLlama3 n'est que de plus de 300 jetons par seconde. Avec la vitesse de Cursor, on peut dire qu'il permet une édition complète et quasi instantanée des fichiers de code. Certaines personnes l'appellent un bon gars, si tu mets Curs

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

China Mobile : l'humanité entre dans la quatrième révolution industrielle et a officiellement annoncé « trois plans » China Mobile : l'humanité entre dans la quatrième révolution industrielle et a officiellement annoncé « trois plans » Jun 27, 2024 am 10:29 AM

Selon les informations du 26 juin, lors de la cérémonie d'ouverture de la Conférence mondiale des communications mobiles 2024 de Shanghai (MWC Shanghai), le président de China Mobile, Yang Jie, a prononcé un discours. Il a déclaré qu'actuellement, la société humaine entre dans la quatrième révolution industrielle, dominée par l'information et profondément intégrée à l'information et à l'énergie, c'est-à-dire la « révolution de l'intelligence numérique », et la formation de nouvelles forces productives s'accélère. Yang Jie estime que de la « révolution de la mécanisation » entraînée par les machines à vapeur, à la « révolution de l'électrification » entraînée par l'électricité et les moteurs à combustion interne, en passant par la « révolution de l'information » entraînée par les ordinateurs et Internet, chaque cycle de révolution industrielle est basé sur « L'information et « l'énergie » constituent l'axe principal, apportant le développement de la productivité

See all articles