我必须将客户的MySql数据库架构/数据迁移到MS SQL SERVER 2008.最后,我收到了70 Mb的SQL文件,其中mySQL方言与MSSQL不兼容。
DROP TABLE IF EXISTS `kladr`;
CREATE TABLE `kladr` (
`id` int(11) NOT NULL DEFAULT '0',
`idp` int(11) DEFAULT NULL,
...
花了一个星期的谈判才收到这样的文件,所以我不敢让mySQL管理员发给我MS SQL SERVER兼容的sql。有没有办法自动将mySQL方言转换为MSSQL SERVER方言?
答案 0 :(得分:2)
最简单的方法是获得转换器。有多种选择可供选择,但可能很难找到一个好选择:有很多垃圾邮件选项可供选择,所有这些选项都需要花钱。
Microsoft有一本在线迁移手册:http://technet.microsoft.com/en-us/library/cc966396.aspx
你需要一些mysql工具和一些mssql工具,如上面链接所述。
添加简短的提示:
如果您查看名为“使用数据加载”的部分。您已经拥有的导出文件可能没问题,因此您可以跳过“生成mysqldump数据提取脚本”。
现在你需要的部分:
将提取的脚本与SQL查询分析器一起使用
生成的脚本现在可用于创建数据库对象和插入数据。从MySQL脚本构造数据库模式的首选方法是使用SQL Server 2000附带的SQL查询分析器工具 您可以直接从“开始”菜单或SQL Server企业管理器内部运行SQL查询分析器。您还可以通过执行isqlw实用程序从命令提示符运行SQL查询分析器 为了使脚本能够正确执行,还需要一些额外的工作,这涉及到SQL方言的某些更改。另外,请记住浏览SQL脚本并将数据类型更改为SQL Server兼容类型。下图显示了mysqldump的导入脚本,请务必注意转储是ASCII脚本文件。
答案 1 :(得分:2)
SQLines提供工具和服务来帮助您传输数据,将数据库模式(DDL),视图,存储过程和函数,触发器,查询,嵌入式SQL语句和SQL脚本从MySQL转换为Microsoft SQL Server。
答案 2 :(得分:0)
有几种方法可以测试SQL中是否存在表。这是一种方法。
if object_id('<table>','U') is not null drop <table>
所以你需要转换所有的
DROP TABLE IF EXISTS `kladr`;
到那个语法。请注意,还有其他方法可以查看表是否存在。
此外,MS-SQL不使用`(反引号)字符,因此您需要删除所有这些字符。但是,当前由反引号包围的某些字段/表名可能是保留字,在这种情况下,您需要使用括号将[fld_name]分隔这些字段/表。
您可能还会在create table语法中遇到一些差异,基本语法也类似。以上示例适用于MS-SQL ...
您可以通过脚本编辑来完成,但我强烈建议您使用上面Nanne建议的链接。祝你好运
答案 3 :(得分:0)
您可以从收到的MySQL脚本中(重新)创建MySQL数据库,并使用数据库转换工具。我过去使用过FullConvert,而且效果很好。支持许多数据库,而且速度很快!