sqlserver数据转mysql

工具准备:本教程需要安装Navicat pernium

一、打开Navicat pernium,分别创建mysql和sqlsever的连接,如下图:
1.png

二、展开mysql连接,新建和sqlserver同名的数据库,并导入数据,操作如下图

2.png

创建成功后,点击展开新建表,在表上右键>导入向导,如下图

3.png

点击下一步,配置sql连接。

4.png
点击下一页按钮,配置sqlserver服务器和要转换的库名,如下图

5.png

点击确定保存,勾选所有表。

6.png

点击下一步,出现如下界面时,需要按下面的界面配置。

6.png
点击高级,按上图配置,然后点击确定,再点击下一步,点击开始按钮导入数据,导入成功如下图。

7.png

导入成功后,关闭导入向导窗口。

导入成功后,mysql中的表结构和数据会成功导入,但是Id主键属性,递增属性,日期类型和默认值属性都会丢失,如下图

8.png

三、批量修改mysql表的字段属性
3.1、给所有表增加主键和自增,在数据库上右键,新建查询,复制下面语句

SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;') AS alter_statement
FROM information_schema.tables
WHERE table_schema = 'capg_com_cn' -- 替换为你的数据库名

运行后,如下图:

9.png
按住ctrl+A键,把生成的sql语句复制到查询中执行。

10.png

运行成功后,所有表的id字段都批量添加了主键和递增。

3.2、将所有timestamp类型改为datetime字类型,并添加默认值,运行下面语句批量生成sql脚本。

SELECT 
    CONCAT('ALTER TABLE `', table_name, '` CHANGE `', column_name, '` `', column_name, '` datetime DEFAULT CURRENT_TIMESTAMP;') AS alter_statement
FROM 
    information_schema.columns
WHERE 
    table_schema = 'capg_com_cn' -- 替换为你的数据库名
    AND data_type = 'timestamp';

生成脚本后,同3.1一样,复制sql语句执行即可。

3.3:将所有double,float类型改为decimal(14,2) 类型,并添加默认值0

SELECT 
    CONCAT('ALTER TABLE `', table_name, '` CHANGE `', column_name, '` `', column_name, '` DECIMAL(14,2) DEFAULT 0;') AS alter_statement
FROM 
    information_schema.columns
WHERE 
    table_schema = 'capg_com_cn' -- 替换为你的数据库名
    AND DATA_TYPE in ('float','double') and column_name<>'id';

生成脚本后,同3.1一样,复制sql语句执行即可。
3.4:给给所有数值字段添加默认值0

SELECT 
    CONCAT('ALTER TABLE `', table_name, '` MODIFY COLUMN `', column_name, '` ' , data_type, ' DEFAULT 0;') AS `query`
FROM 
    information_schema.COLUMNS
WHERE 
    TABLE_SCHEMA = 'capg_com_cn' -- 替换为你的数据库名
    AND DATA_TYPE in ('int','smallint','tinyint','decimal','float','double') and column_name<>'id';

生成脚本后,同3.1一样,复制sql语句执行即可。

到此,数据转换结束,如果操作过程中出现错误,可到论坛反馈或自行百度。