工具准备:本教程需要安装Navicat pernium
一、打开Navicat pernium,分别创建mysql和sqlsever的连接,如下图:
二、展开mysql连接,新建和sqlserver同名的数据库,并导入数据,操作如下图
创建成功后,点击展开新建表,在表上右键>导入向导,如下图
点击下一步,配置sql连接。
点击下一页按钮,配置sqlserver服务器和要转换的库名,如下图
点击确定保存,勾选所有表。
点击下一步,出现如下界面时,需要按下面的界面配置。
点击高级,按上图配置,然后点击确定,再点击下一步,点击开始按钮导入数据,导入成功如下图。
导入成功后,关闭导入向导窗口。
导入成功后,mysql中的表结构和数据会成功导入,但是Id主键属性,递增属性,日期类型和默认值属性都会丢失,如下图
三、批量修改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' -- 替换为你的数据库名
运行后,如下图:
按住ctrl+A键,把生成的sql语句复制到查询中执行。
运行成功后,所有表的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语句执行即可。
到此,数据转换结束,如果操作过程中出现错误,可到论坛反馈或自行百度。