sqlserver 实时 mysql_SQLSERVER数据库转换到MySql数据库的若干问题

SQL SERVER2008库转换为MySql5.0

问题:如何转换?库结构要保证平滑迁移,数据要实现升迁。

解决办法:

1)库结构SQL 生成

打开Power designer15.1 ,打开之前的pdm设计文件,选择菜单项目里的“DataBase”----"Changer current DBMS",

0818b9ca8b590ca3270a3433284dd417.png

在“DBMS”下拉项目中选择"MYSQL5.0",确定。

0818b9ca8b590ca3270a3433284dd417.png

再次点击“DataBase”->"Genarate DataBase",看到当前数据库"DBMS: MySql5.0" ,选择“Options”,可以选择即将输出哪些结构,比如table,索引等;

选择“Format” 可以选择Encoding,默认ANSI;选择“Selection” 可以选中哪些表要输出,选择“Preview”可以预览到新的Mysql语句。

可以看到,SQLSERVER的NTEXT字段现在变为了LONGBLOB(在MySQL中没有ntext类型),但是我们不希望在MySql中使用这个二进制字段,事实上ntext里我们保存的是     Unicode字符。这里我们需要手动把它改为 longtext。

参考,MySQL的 text类型:

TINYTEXT

一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。

BLOB

TEXT

一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

MEDIUMBLOB

MEDIUMTEXT

一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。

LONGBLOB

LONGTEXT

一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

SQLSERVER TEXT类型:

char

定长非Unicode的字符型数据,最大长度为8000

varchar

变长非Unicode的字符型数据,最大长度为8000

text

变长非Unicode的字符型数据,最大长度为2^31-1(2G)

nchar

定长Unicode的字符型数据,最大长度为8000

nvarchar

变长Unicode的字符型数据,最大长度为8000

ntext

变长Unicode的字符型数据,最大长度为2^31-1(2G)

(由对比来看,我们选择LONGTEXT作为ntext的替代比较合适。)

点击确定,生成数据库在MySQL的语句。

2)使用NaviCat premium运行脚本创建新的数据库;

3)使用NaviCat premium 打开旧的数据库(SQLSERVER),右键选择要导出数据的表,选择“导出向导”

0818b9ca8b590ca3270a3433284dd417.png

选择“导出为sql脚本”文件

0818b9ca8b590ca3270a3433284dd417.png,点“下一步”,指定“导出到”选择目标文件,点“高级”确保编码为utf-8,点“确定”--“下一步”,选择导出的字段---“下一步”,再下一步,点“开始”即可。

0818b9ca8b590ca3270a3433284dd417.png

数据的Insert into SQL语句 生成

4)验证SQL :

如果生成的SQL语句里包含 "go" "[' "]" ,则需要替换为空格,因为MySQL不识别,另外也不需要 set identity on 这样的语句

5)使用NaviCat premium 选定执行SQL查询 完成即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值