问题:如何转换?库结构要保证平滑迁移,数据要实现升迁。
解决办法:
打开Power designer15.1,打开之前的pdm设计文件,选择菜单项目里的“DataBase”----"Changer current DBMS",
在“DBMS”下拉项目中选择"MysqL5.0",确定。
再次点击“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的替代比较合适。)
2)使用NaviCat premium运行脚本创建新的数据库;
3)使用NaviCat premium 打开旧的数据库(sqlSERVER),右键选择要导出数据的表,选择“导出向导”
,点“下一步”,指定“导出到”选择目标文件,点“高级”确保编码为utf-8,点“确定”--“下一步”,选择导出的字段---“下一步”,再下一步,点“开始”即可。4)验证sql :
如果生成的sql语句里包含 "go" "[' "]" ,则需要替换为空格,因为MysqL不识别,另外也不需要 set identity on 这样的语句
5)使用NaviCat premium 选定执行SQL查询 完成即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。