公司的数据库要从sqlserver换到mysql,首先要选一台合适的服务器,给了一份用现在sqlserver中导出的全部数据,让我们用这些数据去测试。

刚开始我以为可以将sqlserver导出的.bak直接导入mysql,试了多次之后不行,参考了别的方法:.bk导入sqlserver,sqlserver导入mysql。

第一步,将.bak导入到sqlserver:

pgsql 与 sql server 2022 sql 区别_mysql

      注意:这个地方选”还原数据库“而不是导入,而且这时不能建数据库。


pgsql 与 sql server 2022 sql 区别_数据库_02


目标数据库中输入要导入的数据库名,选择源设备,也就是.bak文件,确定就可以。如果表太多,会显示”查看对象资源管理全部信息“,这需要装个sp1,。


pgsql 与 sql server 2022 sql 区别_sql_03

数据导入sqlserver后就可以想办法导入mysql了,我试了两个工具,一个是SQLyog,一个是NativeSQL,这里都介绍一下。

SQLyog:


pgsql 与 sql server 2022 sql 区别_mysql_04

先建立一个数据库,右键选择导入外部数据。


pgsql 与 sql server 2022 sql 区别_sql_05

选择”开始新工作“ -> 下一步。


pgsql 与 sql server 2022 sql 区别_数据库_06

选择 ”建立新的DSN“。


pgsql 与 sql server 2022 sql 区别_数据库_07

继续下一步。


pgsql 与 sql server 2022 sql 区别_sql server_08

这个地方选择 SQL Server 而不是mysql。


pgsql 与 sql server 2022 sql 区别_mysql_09

单击浏览,选择保存路径,保存文件后缀为dsn。下一步 -> 完成。


pgsql 与 sql server 2022 sql 区别_数据库_10

描述 随便写,由于我的sqlserver在本地,所以是localhost。下一步。


pgsql 与 sql server 2022 sql 区别_sql_11


类似于sqlserver管理器的登录。


pgsql 与 sql server 2022 sql 区别_sql server_12

选择默认数据库。下一步 -> 完成


pgsql 与 sql server 2022 sql 区别_mysql_13

点击"测试数据源"看能不能连上。


pgsql 与 sql server 2022 sql 区别_sql server_14

连接成功。


pgsql 与 sql server 2022 sql 区别_数据库_15

返回到前面的界面了,这时再选择你刚才保存的那个dsn文件,下一步。


pgsql 与 sql server 2022 sql 区别_数据_16

填写mysql的相关信息。下一步。


pgsql 与 sql server 2022 sql 区别_数据_17

选择”从数据源拷贝表“,下一步。


pgsql 与 sql server 2022 sql 区别_mysql_18

下一步一直下去就可以了,可以看看某个表的结构。

NativeSQL也就大同小异。


pgsql 与 sql server 2022 sql 区别_sql_19

选择导入向导。


pgsql 与 sql server 2022 sql 区别_mysql_20

选择ODBC,下一步。


pgsql 与 sql server 2022 sql 区别_数据库_21

选择for SQL Server,这个地方和SQLyog不同。


pgsql 与 sql server 2022 sql 区别_数据库_22

之后就和SQLyog大同小异了。


pgsql 与 sql server 2022 sql 区别_数据库_23

下一步一直点下去。


pgsql 与 sql server 2022 sql 区别_数据_24

这里可以看表的结构。

最后,可以看看用查看表的个数来看表是否全部导入成功。

sqlserver中,

查看表个数:


[sql]  
   view plain 
   copy 
   
 
   
 
 
1. SELECT COUNT(*) FROM sysobjects WHERE (xtype = 'U')  
 
 
 
 
查看视图数: 
 
 
 
   [sql]  
   view plain 
   copy 
   
 
   
 
 
1. select count(1) from sysobjects where xtype='V'   
 
 
 
 
查看存储过程数: 
 
 
 
   [sql]  
   view plain 
   copy 
   
 
   
 
 
1. select count(1) from sysobjects where xtype='P'  
 
 
 
 
xtype的可选项有 
 C = CHECK 约束
 D = 默认值或 DEFAULT 约束
 F = FOREIGN KEY 约束
 L = 日志
 FN = 标量函数
 IF = 内嵌表函数
 P = 存储过程
 PK = PRIMARY KEY 约束(类型是 K)
 RF = 复制筛选存储过程
 S = 系统表
 TF = 表函数
 TR = 触发器
 U = 用户表
 UQ = UNIQUE 约束(类型是 K)
 V = 视图
 X = 扩展存储过程


pgsql 与 sql server 2022 sql 区别_数据库_25


再在mysql中查看表个数:


当然,这数据时从sqlserver中导入的,也就是仅仅导入了数据,存储过程、函数等全都没用

[sql]  
   view plain 
   copy 
   
 
   
 
 
1. SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'LearningReport_de';